架构设计 设计原则

时间:2022-09-19 10:28:22

目录

  • 单一职责
  • 开闭原则
  • 依赖倒转原则
  • 里氏替换原则
  • 接口隔离原则

 

单一职责

定义 一个类应该有且只有一个变化的原因

目的 降低类的复杂度,降低变更引起的风险,降低对其它功能的影响,并提高类的可读性

核心 接口和抽象类的职责单一,从而实现该接口的类职责单一

 

开闭原则(面向对象设计的终极目标)

定义 对修改关闭,对扩展开放

目的 可维护,可扩展,可复用

核心 抽象化

实现 其它几个原则(单一,接口隔离,依赖倒转,里氏替换原则)

注意事项

  1 通过接口或者抽象类约束扩展,对扩展进行边界限定,不允许出现在接口或抽象类中不存在的public方法

  2 参数类型 引用对象尽量使用接口或者抽象类,而不是实现类

  3 抽象层尽量保持稳定,一旦确定不允许修改

 

依赖倒转原则

定义 程序要依赖于抽象接口,不要依赖于具体实现

原则

  1 模块间的依赖通过抽象或接口发生,实现类之间的依赖关系也是通过抽象类或接口产生,降低系统的耦合度

  2 接口或抽象不依赖于实现类,但实现类依赖接口或抽象类,实现类对系统需要的功能具体实现,提高类的内聚程度

优点

  可以通过抽象使各个类或模块的实现彼此独立,不互相影响,实现模块间的松耦合

 

里氏替换原则

核心 任何基类可以出现的地方,子类一定可以出现

说明 是对开闭原则的补充,基类与子类的继承关系就是抽象化的具体实现,是对实现抽象化的具体步骤的规范

 

接口隔离原则

核心 客户端不应该依赖于它不需要的接口,一个类对另一个类的依赖应该建立在最小的接口上

单一原则和接口隔离的区别

  单一职责要求类和几口的职责单一,注重的是职责(业务逻辑上划分)

  接口隔离原则要求接口的方法尽量少

应用原则

  1 一个接口只服务于一个子模块或业务逻辑

  2 通过业务逻辑压缩接口中的public接口,接口要不断的精简,以达到接口不断完善

  3 已经被污染的接口,尽量去修改,若变更的风险较大,则采用适配器进行转换处理