封裝類要保證封裝內(nèi)容的高度統(tǒng)一性,這些方法都大大簡化了類封裝的可維護(hù)性和重調(diào)用性。
可維護(hù)性
既然大家都知道重載是面向?qū)ο蟪绦蛟O(shè)計的很重要組成部分,那么你可以看出軟件的可維護(hù)性的重要性。如果能正確地封裝類,你就可以減少很多函數(shù)的更改。
在同一封裝里嚴(yán)密地聯(lián)結(jié)各個類
嚴(yán)密地聯(lián)結(jié)封裝中的各個類可以得到高凝聚的封裝。如果兩個類展示出很好的聯(lián)結(jié)性,那么這兩個類很有可能被經(jīng)常地調(diào)用以提供聯(lián)系方便的服務(wù)。所以當(dāng)在設(shè)計你的封裝時,你可以最大限度地減小封裝之間的依靠性,以避免各個封裝的沖突。
在同一封裝里類要統(tǒng)一改變
顯然的,當(dāng)其他類改變時,各個嚴(yán)密結(jié)合的類也同樣受到影響。任一個類的更改都會導(dǎo)致與這一類相關(guān)的類的相應(yīng)更改,至少,類中的函數(shù)必須更改。你可以通過在同一封裝里嚴(yán)密聯(lián)結(jié)類來避免這些風(fēng)險。
然而,一些聯(lián)結(jié)不嚴(yán)密的類也被工程的其他改變而改變。在這樣的情況下,你應(yīng)該把這些類放在同一封裝。因為獨立的類改變時,它們會產(chǎn)生其他的負(fù)影響。
在不同封裝里類不要一起調(diào)用
封裝啟發(fā)的可行性取決于是否封裝能提供真正的聯(lián)結(jié)。即使類能經(jīng)常地一起被調(diào)用,它們卻不能一起被改變。所認(rèn)你必須把這些類進(jìn)行獨立封裝。當(dāng)然,這就意味著引入多個封裝來調(diào)用獨立的類。這一方法的優(yōu)點是顯而易見的。
在一個封裝里對一個類的依賴也會產(chǎn)生對其他類的依賴,這是必然的。當(dāng)封裝中一個類改變時,整個封裝都會發(fā)生變化。
在不同封裝里類不要一起重載
不幸的是,即使在初始化時,一個類對象不能允許它自己去調(diào)用不同的類,就給軟件升級帶來不利,這樣軟件的可維護(hù)性就變得非常很重要。所以在不同的封裝里,獨立的類重載是一個最有效的方法。
關(guān)鍵的注意事項
在Java程序設(shè)計時,你必須注意以下幾點:
Containing Change ––––封裝各個類到一個單一的封裝里能減少很多更改,把所有改變都集中到一個封裝里有助于軟件的可維護(hù)性。
Class coupling –––––當(dāng)在同一封裝里聯(lián)結(jié)類時,你應(yīng)該注意到其他類也有可能和這一個類有關(guān)。忽視這些聯(lián)系會產(chǎn)生很多不必要的關(guān)聯(lián)。
Contention ––––– 前兩個啟發(fā)產(chǎn)生比較大的封裝,目的是調(diào)用;后兩個啟發(fā)產(chǎn)生比較小的封裝,目的是可維護(hù)。這前后的封裝會發(fā)生沖突。在開發(fā)過程中,你必須在程序結(jié)構(gòu)上作出相應(yīng)的改變。在程序設(shè)計開發(fā)初期,你應(yīng)該選擇利于軟件可維護(hù)性的比較小的封裝;當(dāng)在開發(fā)后期,你應(yīng)該選擇利于軟件調(diào)用的比較大的封裝。
調(diào)用
當(dāng)設(shè)計程序框架時,你應(yīng)該集中于封裝的調(diào)用,因為Java封裝的調(diào)用和可維護(hù)非常的重要。當(dāng)設(shè)計合理,程序就很容易的支持封裝的調(diào)用功能。