睁眼写BUG,闭眼改BUG。

设计模式和设计原则的关系[笔记]

2020.07.08

设计模式和设计原则的关系

设计原则是思想, 设计模式是实现上的手段, 设计模式就是设计原则的具体实现.

  • 一个设计原则有多种实现
  • 一个设计模式可能融合了多个设计原则
  • 设计原则只是一个建议指导, 不一定要完全遵守

常见的面向对象设计原则

单一职责原则 SRP (Single Responsibility Principle)

一个类应该只有一个职责

开放-关闭原则 OCP (Open-Closed Principle)

一个类应该对扩展开放, 对修改关闭. 简称开闭原则.

要求:

  • 在不修改已有代码的情况下对类进行扩展

里氏替换原则 LSP (Liskov Subsitution Principle)

子类型必须能够替换掉它们的父类, 只有正确替换, 才能实现扩展.

依赖倒置原则 DIP (Dependence Inversion Principle) *

要依赖于抽象, 不要依赖于具体类

要求:

  • 高层模块不应该依赖于底层模块, 二者都应该依赖于抽象
  • 抽象不应该依赖于具体实现, 具体实现应该依赖于抽象

接口隔离原则 ISP (Interface Segregation Principle)

不应该强迫客户依赖于他们不用的方法

最少知识原则 LKP (Least Knowledge Principle)

只和你的朋友谈话, 尽量减少对象的依赖关系

朋友:

  • 对象本身
  • 通过方法传递进来的对象
  • 当前对象所创建的对象
  • 当前对象的实例变量所引用的对象
  • 方法内所创建或实例化的对象

其他原则

  • 面向接口编程
  • 优先使用组合, 而非继承
  • 一个类需要的数据应该隐藏在类的内部
  • 类之间因该零耦合, 或者支传导耦合, 换句话说, 类之间要么没有关系, 要么只是用另一个类的接口提供的操作
  • 在水平方向上尽可能统一地分布系统功能

尾语

研磨设计模式读书笔记