架构整洁之道-09 组件原则-组件聚合

327 阅读2分钟

这是我参与11月更文挑战的第13天,活动详情查看:2021最后一次更文挑战

组件存在的目的是什么?

组件是部署的单元,组件可被作为系统一部分部署的最小项。良好设计的组件可以被独立的开发,独立的发布,独立的部署。

为了实现组件存在的目的,我们应该如何去实现?或者说怎么去设计组件?需要考虑哪些元素?首先,我们先谈谈组件聚合。

组件聚合

复用/发布等效原则 REP

细粒度的重用是细粒度的发布

复用/发布等效原则,The Reuse/Release Equivalence Principle。主要描述组件的发布应当有发布的历史记录,每个记录都有发布号。因为没有发布号,没法保证所有的可重用组件是相互兼容的,而且有发布号可以让软件开发者了解新的发布版本的到来及其带来的变化特性。

共同封闭原则 CCP

集合成模块的这些类的发生变化应当为同样的原因,并且改变次数相同,对于这些类改变不同次数为了不同原因的,分离开成不同组件。

共同封闭原则, The Common Closure Principle。主要描述一个组件不该包含多个使它变化的原因。

对于应用开发,可维护性比可重用性更加重要。所以CCP建议我们将所有类里可能由于相同原因变化的都集合到同一个地方。CCP强调了集合到同个组件的这些类对同样类型的变化是封闭的。因此,当需求的变化来了,这变化很大程度上把变化的组件的数量降到最低。

共同重用原则 CRP

别迫使用户依赖他们不需要的组件。

共同重用原则,The Common Reuse Principle。此原则描述彼此关联不紧密的类不应该放在同一个组件内。

主要作用:决定哪些类放在同一个组件内,决定哪些类不能放在同一个组件内。当一个组件使用了另一个组件,彼此之间产生了依赖关系。当被依赖的改变了,使用依赖的类也需要改变。这样过程可能就会变成2个组件都需要升级,增加劳动力。

组件聚合不是只是将模块表现为函数,这三个组件聚合原则描述出聚合的复杂性和多变性。所以在架构的设计上要认真考虑好可重用性和开发效率之间设计的均衡。