设计模式和设计原则的关系
设计原则是思想, 设计模式是实现上的手段, 设计模式就是设计原则的具体实现.
- 一个设计原则有多种实现
- 一个设计模式可能融合了多个设计原则
- 设计原则只是一个建议指导, 不一定要完全遵守
常见的面向对象设计原则
单一职责原则 SRP (Single Responsibility Principle)
一个类应该只有一个职责
开放-关闭原则 OCP (Open-Closed Principle)
一个类应该对扩展开放, 对修改关闭. 简称开闭原则.
要求:
- 在不修改已有代码的情况下对类进行扩展
里氏替换原则 LSP (Liskov Subsitution Principle)
子类型必须能够替换掉它们的父类, 只有正确替换, 才能实现扩展.
依赖倒置原则 DIP (Dependence Inversion Principle) *
要依赖于抽象, 不要依赖于具体类
要求:
- 高层模块不应该依赖于底层模块, 二者都应该依赖于抽象
- 抽象不应该依赖于具体实现, 具体实现应该依赖于抽象
接口隔离原则 ISP (Interface Segregation Principle)
不应该强迫客户依赖于他们不用的方法
最少知识原则 LKP (Least Knowledge Principle)
只和你的朋友谈话, 尽量减少对象的依赖关系
朋友:
- 对象本身
- 通过方法传递进来的对象
- 当前对象所创建的对象
- 当前对象的实例变量所引用的对象
- 方法内所创建或实例化的对象
其他原则
- 面向接口编程
- 优先使用组合, 而非继承
- 一个类需要的数据应该隐藏在类的内部
- 类之间因该零耦合, 或者支传导耦合, 换句话说, 类之间要么没有关系, 要么只是用另一个类的接口提供的操作
- 在水平方向上尽可能统一地分布系统功能
尾语
研磨设计模式读书笔记