熟悉Java的人都知道Java程序設計時,爲了避免程序的冗雜,減少各個類之間的依耐性,經常使用低耦合和高內聚的設計理念。
所謂耦合 是指在一個軟件結構內不同模塊之間互連程度的度量,
而低耦合 就是指在設計一個軟件時,作爲一個完整的軟件系統,對於各種模塊與模塊之間應儘可能的是其獨立的存在,讓每個模塊儘可能的獨立完成其特定的功能。
如果某兩個模塊間的關係比較複雜的話,最好首先考慮進一步的模塊劃分。這樣有利於修改和組合。
所謂內聚 是指一個模塊內各個元素彼此結合的緊密程度。而高內聚 就是指在一個模塊的內部,應該儘可能的讓每個元素都緊密的相連。
也就是充分利用每一個元素的功能,各施所能,以最終實現某個功能。
如果某個元素與該模塊的關係比較疏鬆的話,可能該模塊的結構還不夠完善,或者是該元素是多餘的。
例如以下有四個類,分別有兩種設計方法 ,如圖:
圖一: 在 該圖中 各個類之間呈網狀引用結構,如果寫代碼時也是這種結構,那麼不僅會使代碼很難理解,而且不容易使讀者理解,更重要的時,無法繼續在上面擴展代碼,即你更改 某一個類的元素時,同時也會影響到其他的類,因爲他們之間的依耐性很高,所謂的“牽一髮而動全身”就是指的這個意思。
圖二:
在該圖中,我們可以看到類C,B,A都只是爲D所用,所以他們相互之間是獨立的,在我們修改代碼時:比如我們修改類C中的代碼,那就不會影響到類B和類A,這樣,只要採用這種星狀結構,不論我們的軟件有多麼的龐大,我們在修繕代碼時也不會有太多的麻煩。
內聚 和耦合 ,包含了橫向和縱向的關係。功能內聚和數據耦合,是我們需要達成的目標。橫向的內聚和耦合,通常體現在系統的各個模塊、類之間的關係,而縱向的耦合,體現在系統的各個層次之間的關係。
高內聚和低耦合 是軟件工程設計的一種原則,是寫代碼時要遵循的一種規範。