《架构整洁之道》第 8 章 OCP:开闭原则

2023-05-25 08:36:51 浏览数 (1)

均为原创,读架构整洁之道的笔记。

开闭原则:(OCP :Open Closed Principle)。

一个设计良好的系统,应该在不需要修改,或者修改很少的前提下,就能够完成扩展功能。

思想实验

场景

假设有一系统。需要在Web上展示财务数据,页面是可以上下拉的,负数值展示为红色。接下来需求方又提出需求,需要将该数据打印出来,每一页有表头和页码,负数值用括号标识。

可以看出,该系统的数据是一致的,只是展现方式有所不同。

数据流

利用SRP原则,可以得出以下数据流:

组件分类

一共五个组件:

书中原图:用<I>标记的是接口,<DS>为数据结构。开放箭头为使用关系,闭合箭头代表实现和继承关系。

可以看出,模块与模块,通过接口隔离后,可以做到底层级模块修改后,并不会影响到高层级,底层级更方便做切换了。

还可以看出,模块A通常实现了上一层级模块中的接口。如ScreenPresenter类实现的是Controller层中的接口(依赖反转)。

这么做的目的是为了让Presenter层的变动,不影响到Controller层。而Interactor是最负责OCP的,其他模块的修改变动都不会影响到它。这是因为Interactor通常是最核心的,属于业务相关,其他都是辅助模块。

并且组件与组件之间的关系都是单向的。

信息隐藏

可以看到,Controller层,使用到了Interactor的两个数据结构分别是请求和响应,这个本意是想让Controller不过渡依赖Interactor的细节,为了让Interactor屏蔽掉发生在Controller上的变动。

本章小结

OCP主要是让系统便于扩展,限制每次修改所影响的范围。实现方式是划分组件,按照依赖关系进行组织,使得高阶组件不会因为低阶组件的修改而受到影响。

0 人点赞