良好的設計肯定要符合這個兩個標準,各個組成部分(如類)的具有高內聚與低耦合的特性。
如果說乙個類具有定義明確單一功能,並且這個類的一切對執行這個任務是必不可少的,那麼這個類就具有內聚性。
內聚不只侷限於類這個層面設計,再更低的層面比如類中的具體方法也要符合;再更高的層面如包、系統、子系統層面也要符合。
測試內聚性乙個很好的方法:用簡短的話語描述實體(類,方法,等)的功能,要求話語中不能帶「和」,比如這個類的功能是(計算和儲存)。
用於描述乙個類對另外乙個類的依賴程度。
如果乙個系統間的組成部分相互依賴是最小時,這個系統的耦合性較低。當然耦合是不可能完全避免的,我們的目的是消除不必要的耦合,從而增加系統可維護性。
例子:如果說a類已依賴了b類,可能有以下幾種形式
b類作為區域性變數
b類作為方法引數
b類作為方法返回值型別
這種依賴可能會引起下面兩個問題
如果a類的系統要重構時,不管是否還需要b類,都還要繼續依賴
如果b類被修改了,a類依賴的地方可能也需要修改
假設有乙個persion類,類中有乙個getbirthdate()方法,還有乙個driverslicense類,有乙個isjunioroperator()方法,用於判斷是否是未成年人。
如果isjunioroperator(persion p)直接使用persion類作為引數
boolean isjunioroperator(person p)
這種耦合方式,如果persion類的getbirthdate()方法修改,則driverslicense類可能也需要修改。建議直接使用date型別作為引數來降低耦合。 高內聚,低耦合
大家都在說高內聚,低耦合。問題是什麼是高內聚?什麼是低耦合?那它們的作用是什麼?先來談談什麼是耦合,耦合就是不同模組之間粘稠的程度。耦合度高證明你的模組之間粘稠,不好剝離模組功能。造成後續修改難度加大,所謂 動一發而牽全身 當你的 粘稠在一起的時候,就代表你的 需要重寫了。那麼避免這些個事情的發生,...
高內聚,低耦合
內聚,更為專業的說法叫功能內聚,是對軟體系統中元素職責相關性和集中度的度量。如果元素具有高度相關的職責,除了這些職責內的任務,沒有其它過多的工作,那麼該元素就具有高內聚性,反之則為低內聚性。其實結合oop的思想,高內聚應該是更加趨向於介面化,工廠模式可以很容易體現這種思想。即方法呼叫,只要通過相應的...
高內聚低耦合
明確一點,乙個程式如果是高內聚零耦合會是最完美的,但是沒有絕對的零耦合。也就不存在什麼完美的程式了。1 什麼是高內聚 低耦合?首先了解什麼是內聚 耦合 1.1.1內聚性 每乙個程式中可能會按照不同功能,將整個 段劃分為不同的模組,每乙個模組內部元素彼此之間會有某些聯絡,此種聯絡就是內聚性。同乙個模組...