auto commit

This commit is contained in:
CyC2018 2018-03-02 10:45:05 +08:00
parent bce53846ef
commit f705a94196

View File

@ -18,15 +18,15 @@
# S.O.L.I.D
S.O.L.I.D是面向对象设计和编程(OOD&OOP)中几个重要编码原则(Programming Priciple)的首字母缩写。
S.O.L.I.D 是面向对象设计和编程 (OOD&OOP) 中几个重要编码原则 (Programming Priciple) 的首字母缩写。
|简写 |全拼 |中文翻译|
| 简写 | 全拼 | 中文翻译 |
| -- | -- | -- |
|SRP| The Single Responsibility Principle |单一责任原则|
|OCP| The Open Closed Principle | 开放封闭原则|
|LSP| The Liskov Substitution Principle |里氏替换原则|
|ISP| The Interface Segregation Principle |接口分离原则|
|DIP| The Dependency Inversion Principle |依赖倒置原则|
|SRP| The Single Responsibility Principle | 单一责任原则 |
|OCP| The Open Closed Principle | 开放封闭原则 |
|LSP| The Liskov Substitution Principle | 里氏替换原则 |
|ISP| The Interface Segregation Principle | 接口分离原则 |
|DIP| The Dependency Inversion Principle | 依赖倒置原则 |
## 1. 单一责任原则
@ -136,11 +136,11 @@ public class Percussion extends Instrument {
}
public class Music {
public static void main(String[] args){
public static void main(String[] args) {
List<Instrument> instruments = new ArrayList<>();
instruments.add(new Wind());
instruments.add(new Percussion());
for(Instrument instrument : instruments){
for(Instrument instrument : instruments) {
instrument.play();
}
}
@ -156,15 +156,15 @@ public class Music {
**1.1 继承相关**
继承有两种形式: 泛化generalize和实现realize表现为 is-a 关系。
继承有两种形式 : 泛化generalize和实现realize表现为 is-a 关系。
① 泛化关系(generalization)
① 泛化关系 (generalization)
从具体类中继承
![](https://github.com/CyC2018/InterviewNotes/blob/master/pics//29badd92-109f-4f29-abb9-9857f5973928.png)
② 实现关系(realize)
② 实现关系 (realize)
从抽象类或者接口中继承
@ -172,14 +172,14 @@ public class Music {
**1.2 整体和部分**
① 聚合关系(aggregation)
① 聚合关系 (aggregation)
表示整体由部分组成,但是整体和部分不是强依赖的,整体不存在了部分还是会存在。以下表示 B 由 A 组成:
![](https://github.com/CyC2018/InterviewNotes/blob/master/pics//34259bb8-ca3a-4872-8771-9e946782d9c3.png)
② 组合关系(composition)
② 组合关系 (composition)
和聚合不同,组合中整体和部分是强依赖的,整体不存在了部分也不存在了。比如公司和部门,公司没了部门就不存在了。但是公司和员工就属于聚合关系了,因为公司没了员工还在。
@ -187,15 +187,15 @@ public class Music {
**1.3 相互联系**
① 关联关系(association)
① 关联关系 (association)
表示不同类对象之间有关联,这是一种静态关系,与运行过程的状态无关,在最开始就可以确定。因此也可以用 1 对 1、多对 1、多对多这种关联关系来表示。比如学生和学校就是一种关联关系一个学校可以有很多学生但是一个学生只属于一个学校因此这是一种多对一的关系在运行开始之前就可以确定。
![](https://github.com/CyC2018/InterviewNotes/blob/master/pics//4ccd294c-d6b2-421b-839e-d88336ff5fb7.png)
② 依赖关系(dependency)
② 依赖关系 (dependency)
和关联关系不同的是, 依赖关系是在运行过程中起作用的。一般依赖作为类的构造器或者方法的参数传入。双向依赖时一种不好的设计。
和关联关系不同的是 , 依赖关系是在运行过程中起作用的。一般依赖作为类的构造器或者方法的参数传入。双向依赖时一种不好的设计。
![](https://github.com/CyC2018/InterviewNotes/blob/master/pics//47ca2614-509f-476e-98fc-50ec9f9d43c0.png)
@ -216,25 +216,25 @@ public class Music {
```java
publc class 刘备 {
public void 应战();
public void 应战 ();
}
publc class 孔明 {
public void 拟定策略();
public void 联合孙权();
private void 借东风火攻();
public void 拟定策略 ();
public void 联合孙权 ();
private void 借东风火攻 ();
}
public class 关羽 {
public void 防守荊州();
public void 防守荊州 ();
}
public class 张飞 {
public void 防守荆州前线();
public void 防守荆州前线 ();
}
public class 孙权 {
public void 领兵相助();
public void 领兵相助 ();
}
```
@ -272,7 +272,7 @@ public class 孙权 {
对象之间的交互式通过发送消息来实现的。
消息有4种类型
消息有 4 种类型:
1\. 简单消息,不区分同步异步。
@ -298,11 +298,7 @@ public class 孙权 {
# 参考资料
- Java 编程思想
- [面向对象设计的SOLID原则](http://www.cnblogs.com/shanyou/archive/2009/09/21/1570716.html)
- [看懂UML类图和时序图](http://design-patterns.readthedocs.io/zh_CN/latest/read_uml.html#generalization)
- [UML系列——时序图顺序图sequence diagram](http://www.cnblogs.com/wolf-sun/p/UML-Sequence-diagram.html)
- [面向对象编程三大特性------封装、继承、多态](http://blog.csdn.net/jianyuerensheng/article/details/51602015)
- [ 面向对象设计的 SOLID 原则 ](http://www.cnblogs.com/shanyou/archive/2009/09/21/1570716.html)
- [ 看懂 UML 类图和时序图 ](http://design-patterns.readthedocs.io/zh_CN/latest/read_uml.html#generalization)
- [UML 系列——时序图顺序图sequence diagram](http://www.cnblogs.com/wolf-sun/p/UML-Sequence-diagram.html)
- [ 面向对象编程三大特性 ------ 封装、继承、多态 ](http://blog.csdn.net/jianyuerensheng/article/details/51602015)