1. 开放封闭
- 允许对类进行扩展,但禁止更改。
2. 依赖倒置
- 高层模块(稳定的)不应该依赖于低层模块(变化的,如子类)。二者都应该依赖于抽象。
- 抽象不应该依赖于实现,实现应该依赖于抽象。
3. 里氏替换
- 子类必须能够替换他们的基类(IS-A)
- 继承表达抽象类型
4. 单一职责原则
- 一个类应该仅有一个引起它变化的原因
- 变化的方向隐含着类的责任
5. 接口隔离原则
- 不应该强迫用户依赖它们不用的接口。
- 接口应该小而完备
6. 优先使用对象组合,而不是类继承
- 继承某种程度上破坏了类的封装性。
- 使用对象组合可以避免这一点。
7. 封装变化点
- 使用封装来创建对象之间的分层界限。
8. 针对接口编程,而不是针对实现
- 客户程序只需要知道对象的接口即可,从而降低代码间的耦合。
总结
- 上述原则所遵循的规则主要就是:
- 降低代码耦合度,便于扩展;
- 总会有变化和稳定的两种模块;
- 当发生需求变化时,往往只需要新增一种子类。