四、高内聚低耦合
1.为什么高内聚低耦合?
为了降低复杂度。如何去降低?首先看低内聚,高耦合是什么样的。
1.低内聚
一个低内聚的模块,会存在一些职责之间没有关联的方法。它内部的每个职责都会有对应的使用者模块。当这个模块内部某个职责发生改变的时候,其他与这个职责不相关的使用者模块因为也依赖于它,因此也就需要重新测试来验证是否自己的业务受到这个职责的修改而发生改变。编译型语言,例如:C++,那么还意味着要重新编译、发布这些使用者模块,即便这个改变和这些使用者模块没有关系。
2.高耦合
当一个模块大量依赖于其他的模块时,当一个被依赖的模块发生改变,这个模块就会受到影响,虽然他自己可能没有什么变化。编译型语言,则意味着只要它所依赖的模块发生改变,它也就得重新编译、发布、部署。
由此可见,低内聚、高耦合带给我们的是诸多的不稳定性,因此我们需要高内聚、低耦合。
2.高内聚低耦合是否意味着“内聚越高越好,耦合越低越好”?
答案是否定的。内聚与耦合相互之间是冲突的,它们的关系就像一个天平,一边高了,另一边必然就低了,不可能同时上升。我们必须根据实际的业务需求,来做一个权衡,使他们处在相对平衡的阶段。