diff --git a/notes/面向对象思想.md b/notes/面向对象思想.md index 6e758727..8509fa0b 100644 --- a/notes/面向对象思想.md +++ b/notes/面向对象思想.md @@ -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 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)