面向对象思想无疑是目前最为流行的软件设计思想,它的强大之处在于可以将现实比较直观的投射到代码中,这个特点非常符合人类的思考方式,很容易建立在软件中建立起现实世界的模型。
然而,一千个读者就有一千个哈姆莱特,对于同一个问题,不同的开发者可能会得出完全不同的设计。有的设计轻盈,灵活,充满美感,让人看了赏心悦目,而有的则笨重,丑陋, 难以维护。
对于一个设计方案,如何评判它的好坏呢?这并没有统一的标准,我想,一个设计是否达到了“高内聚,低耦合”是一个重要的指标。
何为“高内聚,低耦合”
简单来说,所谓高内聚,就是每个类/模块都实现一个明确的功能,不要这个事情做一点那个事情做一点,成一个大杂烩,这主要是对一个类/模块的自身的要求。
所谓低耦合,就是不同的类之间,不要知道的太多,这主要是对类/模块相关关联的要求。
“高内聚,低耦合”的作用
为何要达到“高内聚,低耦合”呢,实际上这是人脑的思考方式决定的。
一般而言,一个系统如果达到了一定的复杂程度,人脑就难以理解了。面对对于这种情况,人们想到了分而治之的方法,也就是将复杂系统拆分成易于理解的小的局部的系统,这样,人们可以首先理解每个小的系统,并将小的系统抽象出来,以此为基础,理解大的系统。
高内聚的特性可以使得我们拆出来的子系统,都是功能明确,易于理解的,而低耦合则确保了各个系统之间没多大的关联性,使我们可以集中思想关注在某一个子系统上面。
可见“高内聚,低耦合”是一个易于理解和维护的软件系统所必备的特点。
如何达成“高内聚,低耦合”
这是一个有趣的话题,我想并没有达成对于这一目标的标准流程,后面的文章,我们会逐步讨论这个问题。