面向对象设计原则
面向对象设计原则
之所以出现这些原则,是因为在软件的设计中面对不可变的需求,为了使软件可控制,在设计层面尽量规范化。
当然这些设计原则在日常使用中做到面面俱到是非常困难的。只有非常有经验的人士才能尽量引用的很好。
原则
- 开闭原则(OCP)
- 依赖倒置原则(DIP)
- 单一责任原则(SRP)
- 里氏替换原则(LSP)
- 迪米特法则(LKP)
- 接口隔离原则(ISP)
- 重用发布等价原则(REP)
- 共同封闭原则(CCP)
- 无依赖原则(ADP)
- 稳定依赖原则(SDP)
- 稳定抽象原则(SAP)
开闭原则
定义
软件实体应当对扩展开放,对修改关闭。
此定义由1988年,勃兰特梅耶(Bertrand Meyer)在他的著作《面向对象软件构造》中提出。
依赖倒置原则
定义
- 高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。
- 抽象不应该依赖于具体实现,具体实现应该依赖于抽象。
单一责任原则
定义
就一个类而言,应该仅有一个引起它变化的原因。
里氏替换原则
定义
“继承必须确保超类所拥有的性质在子类中仍然成立。”也就是说,当一个子类的实例应该能够替换任何其超类的实例时,他们之间才具有is-A关系。
迪米特法则
定义
迪米特法则又叫作最少知识原则,就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。
接口隔离原则
定义
客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。
重用发布等价原则
定义
重用的粒度就是发布的粒度。
共同重用原则
定义
一个包中的所有类应该是共同重用的。如果重用了包中的一个类,那么就要重用包中的所有类。相互之间没有紧密联系的类不应该在同一个包中。
共同封闭原则
定义
一个包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包影响,则将对包中的所有类产生影响,而对其他的包不造成任何影响。
无依赖原则
定义
在包的依赖关系中不允许存在环。细节不应该被依赖。
稳定依赖原则
定义
朝着稳定的方向进行依赖。
稳定抽象原则
定义
一个包的抽象程度应该和其他稳定程度一致。