面向?qū)ο笏枷霟o疑是目前最為流行的軟件設(shè)計(jì)思想,它的強(qiáng)大之處在于可以將現(xiàn)實(shí)比較直觀的投射到代碼中,這個(gè)特點(diǎn)非常符合人類的思考方式,很容易建立在軟件中建立起現(xiàn)實(shí)世界的模型。
然而,一千個(gè)讀者就有一千個(gè)哈姆萊特,對(duì)于同一個(gè)問題,不同的開發(fā)者可能會(huì)得出完全不同的設(shè)計(jì)。有的設(shè)計(jì)輕盈,靈活,充滿美感,讓人看了賞心悅目,而有的則笨重,丑陋, 難以維護(hù)。
對(duì)于一個(gè)設(shè)計(jì)方案,如何評(píng)判它的好壞呢?這并沒有統(tǒng)一的標(biāo)準(zhǔn),我想,一個(gè)設(shè)計(jì)是否達(dá)到了“高內(nèi)聚,低耦合”是一個(gè)重要的指標(biāo)。
何為“高內(nèi)聚,低耦合”
簡(jiǎn)單來說,所謂高內(nèi)聚,就是每個(gè)類/模塊都實(shí)現(xiàn)一個(gè)明確的功能,不要這個(gè)事情做一點(diǎn)那個(gè)事情做一點(diǎn),成一個(gè)大雜燴,這主要是對(duì)一個(gè)類/模塊的自身的要求。
所謂低耦合,就是不同的類之間,不要知道的太多,這主要是對(duì)類/模塊相關(guān)關(guān)聯(lián)的要求。
“高內(nèi)聚,低耦合”的作用
為何要達(dá)到“高內(nèi)聚,低耦合”呢,實(shí)際上這是人腦的思考方式?jīng)Q定的。
一般而言,一個(gè)系統(tǒng)如果達(dá)到了一定的復(fù)雜程度,人腦就難以理解了。面對(duì)對(duì)于這種情況,人們想到了分而治之的方法,也就是將復(fù)雜系統(tǒng)拆分成易于理解的小的局部的系統(tǒng),這樣,人們可以首先理解每個(gè)小的系統(tǒng),并將小的系統(tǒng)抽象出來,以此為基礎(chǔ),理解大的系統(tǒng)。
高內(nèi)聚的特性可以使得我們拆出來的子系統(tǒng),都是功能明確,易于理解的,而低耦合則確保了各個(gè)系統(tǒng)之間沒多大的關(guān)聯(lián)性,使我們可以集中思想關(guān)注在某一個(gè)子系統(tǒng)上面。
可見“高內(nèi)聚,低耦合”是一個(gè)易于理解和維護(hù)的軟件系統(tǒng)所必備的特點(diǎn)。
如何達(dá)成“高內(nèi)聚,低耦合”
這是一個(gè)有趣的話題,我想并沒有達(dá)成對(duì)于這一目標(biāo)的標(biāo)準(zhǔn)流程,后面的文章,我們會(huì)逐步討論這個(gè)問題。