目录
- 单一职责
- 开闭原则
- 依赖倒转原则
- 里氏替换原则
- 接口隔离原则
单一职责
定义 一个类应该有且只有一个变化的原因
目的 降低类的复杂度,降低变更引起的风险,降低对其它功能的影响,并提高类的可读性
核心 接口和抽象类的职责单一,从而实现该接口的类职责单一
开闭原则(面向对象设计的终极目标)
定义 对修改关闭,对扩展开放
目的 可维护,可扩展,可复用
核心 抽象化
实现 其它几个原则(单一,接口隔离,依赖倒转,里氏替换原则)
注意事项
1 通过接口或者抽象类约束扩展,对扩展进行边界限定,不允许出现在接口或抽象类中不存在的public方法
2 参数类型 引用对象尽量使用接口或者抽象类,而不是实现类
3 抽象层尽量保持稳定,一旦确定不允许修改
依赖倒转原则
定义 程序要依赖于抽象接口,不要依赖于具体实现
原则
1 模块间的依赖通过抽象或接口发生,实现类之间的依赖关系也是通过抽象类或接口产生,降低系统的耦合度
2 接口或抽象不依赖于实现类,但实现类依赖接口或抽象类,实现类对系统需要的功能具体实现,提高类的内聚程度
优点
可以通过抽象使各个类或模块的实现彼此独立,不互相影响,实现模块间的松耦合
里氏替换原则
核心 任何基类可以出现的地方,子类一定可以出现
说明 是对开闭原则的补充,基类与子类的继承关系就是抽象化的具体实现,是对实现抽象化的具体步骤的规范
接口隔离原则
核心 客户端不应该依赖于它不需要的接口,一个类对另一个类的依赖应该建立在最小的接口上
单一原则和接口隔离的区别
单一职责要求类和几口的职责单一,注重的是职责(业务逻辑上划分)
接口隔离原则要求接口的方法尽量少
应用原则
1 一个接口只服务于一个子模块或业务逻辑
2 通过业务逻辑压缩接口中的public接口,接口要不断的精简,以达到接口不断完善
3 已经被污染的接口,尽量去修改,若变更的风险较大,则采用适配器进行转换处理