面向对象设计原则
概述
软件的可维护性和可复用性
设计原则(7类)
不是孤立存在,而是相互依赖,相互补充
总览:
| 名称 | 简介 | 重要性 |
|---|---|---|
| 单一职责原则 | 类的职责要单一 | 4 |
| 开闭原则 | 对拓展开放,对修改关闭 | 5 |
| 里氏替换原则 | 一个可以接受基类对象的地方一定能接受一个子类对象 | 4 |
| 依赖倒转原则 | 针对接口编程,而不需啊对具体类编程 | 5 |
| 接口隔离原则 | 使用多个专门的接口来取代统一的一个接口 | 2 |
| 合成复用原则 | 多用组合和聚合关联关系,尽量少用甚至不用继承关系 | 4 |
| 迪米特原则 | 一个软件实体对其他实体的引用越少越好 | 3 |
单一职责原则
顾名思义,单一职责原则就是要求我们的对象只包含单一的职责,且被完整地封装在一个类中。
单一职责原则是最简单但又最难运用的原则,需要设计人员发现类的不同职责并将其分离。设计人员需要有较强的分析设计能力和相关的重构经验。
开闭原则(抽象,面向对象的主要目的)
强调用抽象实现框架,用实现扩展细节。本质的意思是使用继承完成功能的扩展。
里氏代换原则(抽象的实现方式)
在程序中尽量使用基类类来对对象进行定义,而在运行的时候再确定子类类型,用子类对象来替换父类对象。
依赖倒转原则(抽象的实现方式,面向对象的主要手段)
高层模块不应该依赖于低层模块,而应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。 或者说:针对接口编程,不要针对实现编程。
接口隔离原则(抽象时接口的要求,和单一职责原则对映)
客户端不应该依赖于那些它不需要的接口。使用多个专门的接口,而不使用单一的总接口。 当然,在拆分接口的时候,首先必须满足单一职责原则。
合成复用原则
继承:破坏系统的封装性,“白箱复用”
迪米特法则
迪米特法则要求在设计系统时,应当尽量减少对象之间的交互
- 两个对象之间不必彼此直接通信,那么这两个对象就不应该发生任何直接的相互作用
- 果其中一个对象需要调用另一个对象的方法,可以通过“第三者”转发这个调用
- 引入一个合理的“第三者”(中间类)来降低现有对象之间的耦合度。