Skip to content

Latest commit

 

History

History
36 lines (21 loc) · 1.41 KB

2_ocp.md

File metadata and controls

36 lines (21 loc) · 1.41 KB

开放-封闭原则(OCP)

概念

Bertrand Meyer在1988年提出的,其概念如下:

软件实体(类、模块、函数等)应该是可以扩展的,但对修改是关闭的(不可修改的)。也就是说,一个实体允许被扩展,而无需修改其源代码。

如果程序中的一处改动就会产生连锁反应,导致一系列相关模块的改动,那么设计就具有僵化性的坏味道。而OCP的好处:

  • 具有弹性可以应对改变;
  • 可以接受新的功能(添加新的代码)来应对改变(新增)的需求。

特征

OCP两个主要的特征:

  • 对于扩展是开放的:可以改变模块的功能以适应需求的改变,通过模块的扩展实现
  • 对于更改是封闭的:对模块进行扩展时,不必更改模块的源代码或二进制代码

如何实现呢,关键就是对程序中频繁变化的那些部分做出抽象,其他的行为可以是其扩展类。

软件架构方面的应用

OCP的主要目标是让系统易于扩展,同事限制其每次被修改所影响的范围。实现方式:

  • 通过将系统划分为一系列组件;
  • 将这些组件间的依赖关系按照层次结构进行组织

达到的效果:让高阶组件不会因低阶组件被修改而受到影响。

参考资料