面向对象的设计原则
三个宏观的设计原则:
- 针对接口编程,而不是针对实现编程(Code to an interface rather than to an implementation.)。
- 优先使用对象组合,而不是类继承(Favor Composition Over Inheritance)。
- 封装变化点(Encapsulate what varies. )。
几个具体的设计原则:
- 单一职责原则 (The Single Responsiblity Principle,简称SRP)就一个类而言,应该仅有一个引起它变化的原因。
- 开放-封闭原则 (The Open-Close Principle,简称OCP)类模块应该是可扩展的,但是不可修改(对扩展开放,对更改封闭)。
- Liskov 替换原则(The Liskov Substitution Principle,简称LSP)子类必须能够替换他们的基类。
- 依赖倒置原则(The Dependency Inversion Pricinple,简称DIP) 高层模块不应该依赖于低层模块。二者都应该依赖于抽象;抽象不应该依赖于实现细节。实现细节应该依赖于抽象。
- 接口隔离原则 (The Interface Segregation Principle,简称ISP)不应该强迫客户程序依赖它们不需要的使用的方法。