设计原则(SOLID)
1. 单一职责原则SRP
- 任何一个软件模块都应该只对某一类行为者负责。
2. 开放封闭原则OCP
- Open for extension, closed for modification
- 软件应该易于扩展,同时抗拒修改。
- 换句话说,应该能够在不修改现有代码的前提下通过添加新代码对软件进行扩展。
3. 里氏替换原则LSP
- 所有引用基类的地方必须能透明地使用其子类的实例。
- 推论:基类的非抽象方法都应该是final的。
4. 接口隔离原则ISP
- 不应该强迫客户依赖于他们不用的方法
5. 依赖倒置原则DIP
- 高层模块不应该依赖于低层模块,二者都应该依赖于抽象。
- 抽象不应该依赖于细节。细节应该依赖于抽象。
- 接口属于客户。客户通过接口定义需求,服务则负责实现这些需求
- 好莱坞规则:Don't call us, we'll call you.
- 推论:所有的依赖关系都应该终止于接口或抽象类