Liskov 替换原则(LSP)
-
定义
子类型必须能够替换掉它们的基类型。也就是说:若类型 S 是类型 T 的子类,在所有针对 T 编写的程序 P 中,用类型 S 的对象 o1 替换类型 T 的对象 o2 能够使程序 P 的行为功能保持不变。
-
LSP 解决了什么问题
LSP 要求的子类可替换性使得使用基类类型的模块在无需修改的情况下得以扩展。LSP 是使 OCP 成为可能的主要原则之一。
依赖倒置原则(DIP)
-
定义
高层模块不依赖于底层模块,二者都应该依赖于抽象。
抽象不应该依赖于细节,细节应该依赖于抽象。
注:抽象为客户所需要的服务。
-
DIP 解决了什么问题
使得高层模块独立于底层模块,能够非常容易地被重用。DIP 是框架设计的核心原则。
使得代码易于维护。
-
如何实现
- 任何变量都不应该持有一个指向具体类的指针或引用。
- 任何类都不应该从具体诶派生。
- 任何方法都不应该覆写它的任何基类中的已经实现了的方法。
接口隔离原则(ISP)
-
定义
一个接口类中的所有方法应该是类聚的,不含有它们所服务的客户程序所不需要的方法。
-
ISP 解决了什么问题
解除类客户程序和它们没有调用的方法间的依赖关系,并使客户程序间互不依赖。