美文网首页
Java与模式读书笔记

Java与模式读书笔记

作者: 我的小鱼干去哪儿了 | 来源:发表于2018-05-02 13:45 被阅读0次

1. 什么是模式?

模式化的过程是把问题抽象化,在忽略掉不重要的细节后,发现问题的一般性本质,并找到普遍适用的解决方案的过程。

2. 好的系统应该具有的性质

  • 可扩展性
  • 灵活性
  • 可插入性

3. 开闭原则 (OCP)

一个软件实体应该对扩展开放,对修改封闭
对可变性的封装原则: 找到一个系统的可变因素,将其封装起来

继承

继承应当被看做是封装变化的方法,而不应当被认为是从一般的对象生成特殊的对象的方法。

与里氏替换原则的关系

(1)里氏替换:任何基类可以出现的地方,子类一定可以出现。
(2)里氏替换原则是对开闭原则的补充。
实现开闭原则的关键步骤是抽象化。
基类与子类的继承关系就是抽象化的具体体现。
里氏替换是对实现抽象化的具体步骤的规范。
(3)违背里氏替换原则的也违背开闭原则,反之不然。

与依赖倒转原则的关系

(1) 依赖倒转: 要依赖于抽象,不要依赖于实现
(2) 开闭原则是目标,依赖倒转是手段

与合成/聚合复用原则的关系

(1) 合成/聚合复用原则:要尽量使用合成/聚合,而不是继承关系达到目的
(2) 合成/聚合复用原则 与 里氏替换原则 是相辅相成的
(3) 与里氏替换原则一样,是对实现抽象化的具体步骤的规范
(4) 是实现开闭原则的必要条件,如果违法这一原则,系统就无法实现开闭原则。

与迪米特法则的关系

(1) 一个软件实体应当尽可能少的与其他实体发生相互作用。
(2) 迪米特法则容易做到对修改的封闭,是一条通向开闭原则的道路。

与合成/聚合复用原则的关系

(1) 合成/聚合复用原则: 应当为客户端提供尽可能小的单独的接口,而不是提供大的总接口。
(2) 限制了通信的宽度,不会将修改的压力传递到其他的对象。

4. 接口

4.1 可插入性构件

关键在于存在一个公用的接口,以及每个构件都实现了这个接口。

4.2 接口

接口是实现可插入性构件的关键。
接口把方法的特征和方法的实现分割开来。
接口通常代表一个角色(Role), 它包含与该角色相关的操作与属性,而实现这个接口的类便是扮演这个角色的演员。

接口提供了关联以及方法调用上 的可插入性。

5. 抽象类

(1)抽象类可以同时有抽象方法和具体方法。
(2)抽象类一定是用来继承的,只要有可能,不要从具体类继承。
(3)IS-A关系才符合继承关系,Has-A 关系符合聚合关系。

6. 里氏替换原则 (LSP)

一个软件实体如果使用的是其基类的话,那么一定适用于其子类,而它根本不能察觉出基类对象和子类对象的区别。

里氏替换原则是继承复用的基石。

7. 依赖倒转原则(DIP)

要依赖于抽象,不依赖于具体。要针对接口编程,不针对实现编程。
开闭原则是面向对象设计的目标,依赖倒转原则是面向对象设计的主要机制。

7.1 三种耦合关系

  • 零关系耦合
  • 具体耦合
  • 抽象耦合

8.接口隔离原则(ISP)

使用多个专门的接口比使用单一的总接口要好
一个接口应当简单的代表一种角色(单一责任原则)

9. 合成/聚合复用原则 (CARP)

要尽量使用合成/聚合,尽量不要使用继承。

9.1 合成

合成表示拥有关系或者整体与部分的关系

9.2 聚合

聚合也表示整体与部分的关系,但是部分与整体的生命周期是一样的。

9.3 Has-A 和 Is-A

如果两个类的关系是Has-A, 那么这两个类一定违反里氏替换原则。
只有两个类符合里氏替换原则,才有可能是Is-A关系。

10. 迪米特法则(LoD Low Of Demeter)

又叫最少知识原则,一个对象应当对其他对象有尽可能少的了解。
一个对象仅仅与其朋友发生相互作用。

11. SOLID原则 总结

缩写 全程 中文
S The Single Responsibility Principle 单一责任原则
O The Open Closed Principle 开放封闭原则
L Liskov Substitution Principle 里氏替换原则
I The Interface Segregation Principle 接口分离原则
D The Dependency Inversion Principle 依赖倒置原则

12. 参考文献

  1. Java与模式
  2. 面向对象的SOLID原则

相关文章

  • Java与模式

    《JAVA与模式》之简单工厂模式《JAVA与模式》之工厂方法模式《JAVA与模式》之抽象工厂模式

  • java设计模式

    一、《JAVA与模式》之工厂方法模式 二、《JAVA与模式》之抽象工厂模式 三、《JAVA与模式》之单例模式 四、...

  • Java与模式读书笔记

    1. 什么是模式? 模式化的过程是把问题抽象化,在忽略掉不重要的细节后,发现问题的一般性本质,并找到普遍适用的解决...

  • 《JAVA与模式》之简单工厂模式

    《JAVA与模式》之简单工厂模式 在阎宏博士的《JAVA与模式》一书中开头是这样描述简单工厂模式的:简单工厂模式是...

  • Java设计模式之11_Facade(外观模式)

    更多Java设计模式:Java设计模式-目录 一、模式定义 外观模式(Facade Pattern):外部与一个子...

  • 设计模式

    《Android源码设计模式解析与实战》读书笔记(一)

  • 应用最广的模式——单例模式

    《Android源码设计模式解析与实战》读书笔记(二)《Android源码设计模式解析与实战》PDF资料下载 一、...

  • 随遇而安——状态模式

    《Android源码设计模式解析与实战》读书笔记(八)《Android源码设计模式解析与实战》PDF资料下载 一、...

  • 化繁为简的翻译机——解释器模式

    《Android源码设计模式解析与实战》读书笔记(十)《Android源码设计模式解析与实战》PDF资料下载 一、...

  • 自由扩展你的项目——Builder模式

    《Android源码设计模式解析与实战》读书笔记(三)《Android源码设计模式解析与实战》PDF资料下载 一、...

网友评论

      本文标题:Java与模式读书笔记

      本文链接:https://www.haomeiwen.com/subject/okxcrftx.html