auto commit
This commit is contained in:
parent
bce53846ef
commit
f705a94196
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue
Block a user