本文除了SOLID五个原则,还加了迪米特法则、组合/聚合复用原则。
即SOLID + LoD + CARP。
1. 单一职责原则(SRP,Single Responsibility Principle)
一个类应该只有一个职责。(一个类应该只有一个引起其变化的原因)
2. 开闭原则(OCP,Open/Closed Principle)
对扩展开放,对修改关闭。(支持扩展,限制修改)
3. 里氏替换原则(LSP,Liskov Substitution Principle)
子类必须能替换父类;否则,不应设计为子类。
4. 接口隔离原则(ISP,Interface Segregation Principle)
将大的接口拆分为小的接口。(每个接口实现一个职责,方便组合)
5. 依赖倒置原则(DIP,Dependency Inversion Principle,或IoC,控制反转)
a. 高层模块不应该依赖低层模块,它们都应该依赖抽象;
b. 抽象不应依赖具体,具体应该依赖抽象。
6. 迪米特法则(LoD,Law of Demeter, 或者最少知识原则,LKP, Least Knowledge Principle)
一个对象应该尽可能少的了解其他对象。(松耦合)
7. 组合/聚合复用原则(CARP,Composition/Aggregation Reuse Principle)
优先使用组合/聚合,而非继承。