面向对象的七大设计原则
- 开放封闭原则(OCP)
- 单一职责(SRP)
- 里氏代换(LSP)
- 依赖倒转(DIP)
- 迪米特法则(LOD)
- 接口隔离(ISP)
- 合成聚合复用原则(CARP)
开放封闭原则(Open-Closed Principle,OCP)
对扩展开放,对修改封闭
- 面向对象的可复用设计的基石
- 其他设计原则都是实现OCP的手段和工具
- 解决问题的关键在于抽象化,抽象化是面向对象设计的一个核心本质
- 什么是抽象?抽象就是抽象类和接口
单一职责原则(Single Responsibility Principle ,SRP)
不同的职责分离到单独的类中
- 一个类,最好只做一件事,只有一个引起它变化的原因
里氏代换原则(Liskov Substitution Principle,LSP)
子类可以替换任何基类能够出现的地方
依赖倒转原则(Dependence Inversion Principle,DIP)
- 高层模块不应该依赖于底层模块,二者都依赖于抽象
- 抽象不应该依赖于细节,细节应该依赖于抽象,要针对接口编程,不要针对实现编程
迪米特法则(Law of Demeter,LOD)
一个对象应当对其他对象有尽可能少的了解,即“不要和陌生人说话”
- 又叫最少知识原则
- 一个类调用另一个类的某一个方法时,可以通过第三者转发这个调用
接口隔离(Interface Separate Principle,ISP)
使用多个专门的接口比使用单一的总接口要好
- 一个类对另一个类的依赖性应当是建立在最小的接口之上
合成聚合复用原则(Composite/Aggregate Reuse Principle,CARP)
优先使用对象合成/聚合,而不是类继承
- 继承属于强耦合的结构(两个实现类)