什么是模块?
1 | Components are the units of deployment. |
模块就是可部署的最小单位。不同的模块组合起来构成一个系统。
设计优良的模块可以做到独立的部署和独立的开发。
模块聚合(Components Cohesion)
那么如何决定一个类应该属于哪个模块呢?
模块聚合的三个原则
1. REP 复用发布等价原则(The Reuse/Release Equivalence Principle)
1 | The granule of reuse is the granule of release. |
复用的部分就是发布的部分。
一个可复用的模块(包,库,API),对它的修改必须兼容已有的功能,当用户升级到新版本的时候,不会影响到原系统的正常运作。
每次新的发布,应该有一个规范的发布,包括版本号,类库的说明等等。以便用户查阅和升级。
2. CCP (The Common Closure Principle)
1 | Gather into components those classes that change for the same reasons and at the same times. |
将会同时并且因为同样的原因进行修改的类放入一个模块中。
将会在不同时期因为不同的原因进行修改的类放入不同的模块中。
3. CRP (The Common Reuse Principle)
1 | Don’t force users of a component to depend on things they don’t need. |
不要强制用户依赖于一些他们不会使用的东西。-> 不要依赖于你不需要的东西。
一个模块不应该由于其不依赖的代码而需要重新编译/测试/发布