高内聚与低耦合

聚合(Cohesion)是一个模块内部各成分之间相关联程度的度量

  • 首先,聚合是对一个模块内部的度量,这也是许多情况下我们把聚合称之为内聚的原因。
  • 第二,这里出现的模块是广义的模块,它可能是子系统,可能是功能模块,也可能是功能模块中的某一个类。从不同的层次看,聚合的程度也会有所不同。
  • 第三,模块的成分包括模块的行为和状态。要做到高聚合,那么模块内部的行为必须要与模块的内部状态紧密关联。
  • 通俗来讲,一个模块仅完成一个独立的功能,模块内部不存在与该功能无关的操作或状态。

耦合(Couping)是模块之间相关联程度的度量

  • 相对于聚合的内向性,耦合关注的是某一模块和其他模块之间的关联性。
  • 两个模块关联性过高,一个模块内部出现问题将影响另一个模块。
  • 我们所追求的低耦合,就是将两个模块之间的关联尽可能的降低,一个模块发生变化对于其他模块的影响尽可能的小。

聚合和耦合的平衡

  • 一味的追求高内聚,必然会造成模块的功能过于单一,而模块的数量出现急剧膨胀。
  • 我们在设计和实现程序时必须要斟酌模块间的聚合和耦合程度。