前言
一个稳定的系统设计,肯定要遵守好的设计原则。在OO design当中,正有这样的 solid
(坚固的)设计原则。他们分别是:
- S : Single Responsibility Principle
- O : Open Closed Principle
- L : Liskov Substitution Principle
- L : Law of Demeter
- I : Interface Segregation Principle
- D : Dependence Inversion Principle
开闭原则
定义
Software entities like classes,modules and functions should be open for extension but closed for modifications.
一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。
What
什么是软件实体?
- 项目或软件产品中按照一定的逻辑规则划分的模块。
- 抽象和类。
- 方法。
Why
为什么需要扩展?
一个软件产品只要在生命期内,都会发生变化,既然变化是一个既定的事实,我们就应该在设计时尽量适应这些变化,以提高项目的稳定性和灵活性,真正实现“拥抱变化”。
为什么要采用开闭原则?
开闭原则是最基础的一个原则,是面向对象设计原则的精神领袖
,其他的原则可以说是他的具体实现。
- 提高复用性
- 提高可维护性
- 不影响已有的测试单元
- 面向对象设计的需要
How
如何使用开闭原则?
- 抽象约束
- 元数据(metadata)控制模块行为
- 制定项目章程
- 封装变化
变化的种类:
- 逻辑变化
- 子模块变化
- 可见视图变化