SOLID 设计原则包含以下 5 种原则:
- 单一职责原则(Single Responsibility Principle, SRP)
- 开闭原则(Open Closed Principle, OCP)
- 里式替换原则(Liskov Substitution Principle, LSP)
- 接口隔离原则(Interface Segregation Principle, ISP)
- 依赖反转原则(Dependency Inversion Principle, DIP)
单一职责原则
理解
单一职责原则的描述是,一个类或者模块只负责完成一个职责(或功能)。当然,单一职责原则不止是可以针对于模块或类,对于很多粒度都有效果,如函数、类、接口、模块等等,模块通常由多个类组成。
职责可以指模块变化的原因,从这个角度理解,单一职责原则表示不要存在超过一个导致模块变更的原因。
需要注意的是,不同的应用场景、不同阶段的需求背景、不同的业务层面,对同一个类的职责是否单一,可能会有不同的判定结果。
优点
遵循单一职责原则,将会有以下的优点:
- 提高代码的可维护性:职责越少,复杂度越低,可读性更好,可维护性就更高
- 降低代码变更的风险:职责越多,代码变更的可能性就越高,变更带来的风险也就越大
最佳实践
在实际开发中,出现以下现象有可能违反了单一职责原则:
- 模块的变量、属性或代码行数过多
- 模块的内部对外部依赖过多
- 模块的私有方法过多
- 难以给模块取一个合理的名称
- 模块的大部分操作只针对几个属性
如出现上述情况,则需要判断是否对代码做职责分离,以遵循单一职责原则,最终应以提高内聚、降低耦合、保证代码的可维护性为主。
开闭原则
理解
开闭原则的描述是,软件实体(模块、类、方法等)应该“对扩展开放、对修改关