神秘的高內聚與低耦合舉例

2021-09-28 19:45:07 字數 2169 閱讀 8099

1.巧合

內聚 / 偶然內聚

模組的各成分之間沒有關聯,只是把分散的功能合併在一起。 例:

a模組中有三條語句(一條賦值,一條求和,一條傳參),表面上看不出任何聯絡,但是b、

c模組中都用到了這三條語句,於是將這三條語句合併成了模組

a。模組

a中就是偶然內聚。 2.

邏輯內聚

邏輯上相關的功能被放在同一模組中。 例:

a模組實現的是將對應的人員資訊傳送給技術部,人事部和財政部,決定傳送給哪個部門是輸入的控制標誌決定的。模組

a中就是邏輯內聚。 3.

時間內聚

模組完成的功能必須在同一時間內執行,但這些功能只是因為時間因素才有關聯。

例:程式設計開始時,程式設計師把對所有全域性變數的初始化操作放在模組

a中。模組

a中就是時間內聚。 4.

過程內聚

模組內部的處理成分是相關的,而且這些處理必須以特定的次序進行執行。 a

模組負責依次讀取使用者的使用者名稱、郵箱和****,這個次序是事先規定的,不能改變。模組

a中就是過程內聚。 5.

通訊內聚

模組的所有成分都操作同一資料集或生成同一資料集。

例:模組

a實現將傳入的

date

型別資料轉換成

string

型別,以及將

date

型別資料插入資料庫,這兩個操作都是對

「date

型別資料

」而言的。模組

a中就是通訊內聚。 6.

順序內聚 / 資訊內聚

模組的各個成分和同乙個功能密切相關,而且乙個成分的輸出作為另乙個成分的輸入。

例:模組

a實現將傳入的

date

型別資料轉換成

string

型別,然後再將轉換好的

string

型別資料插入資料庫。模組

a中就是順序內聚。 7.

功能內聚

模組的所有成分對於完成單一的功能都是必須的。

例:模組

a實現將新註冊的使用者資訊(使用者名稱,密碼,個性簽名)全部轉換成

string

型別並插入資料庫。模組

a中就是功能內聚。

1.內容耦合

乙個模組直接修改或操作另乙個模組的資料

,或者直接轉入另乙個模組。

例:模組

a中定義了變數

a,在模組

b中直接使用了。這種情況下模組

a和模組

b就是內容耦合。 2.

公共耦合

兩個以上的模組共同引用乙個全域性資料項。

例:定義了乙個全域性變數a,在

a、b、

c模組中均呼叫了

a,這種情況下模組

a、模組

b、模組

c就是公共耦合。

3.外部耦合

模組與軟體的外部裝置相連,共享外部資源

4.控制耦合

乙個模組在介面上傳遞乙個訊號控制另乙個模組,接收訊號的模組的動作根據訊號值進行調整。

例:模組

a獲取使用者型別(普通使用者、高階使用者)傳遞給模組

b,模組

b根據不同型別的使用者提供不同的服務。這種情況下模組

a和模組

b就是控制耦合。 5.

標記耦合

模組間通過引數傳遞複雜的內部資料結構。

例:模組

a向模組b傳遞

object

型別的資料。這種情況下模組

a和模組

b就是標記耦合。 6.

資料耦合

模組間通過引數傳遞基本型別的資料。

例:模組

a實現兩個數的加法操作,模組

b實現兩個加數的初始化,模組

b將兩個加數傳給模組

a,模組

a進行相加。這種情況下模組

a和模組

b就是資料耦合。 7.

非直接耦合

模組間沒有資訊傳遞。

例:模組

a實現輸出字串,模組

b實現接收

int資料,兩者之間沒有資訊傳遞。這種情況下模組

a和模組

b就是非直接耦合。

高內聚與低耦合

良好的設計肯定要符合這個兩個標準,各個組成部分 如類 的具有高內聚與低耦合的特性。如果說乙個類具有定義明確單一功能,並且這個類的一切對執行這個任務是必不可少的,那麼這個類就具有內聚性。內聚不只侷限於類這個層面設計,再更低的層面比如類中的具體方法也要符合 再更高的層面如包 系統 子系統層面也要符合。測...

高內聚,低耦合

大家都在說高內聚,低耦合。問題是什麼是高內聚?什麼是低耦合?那它們的作用是什麼?先來談談什麼是耦合,耦合就是不同模組之間粘稠的程度。耦合度高證明你的模組之間粘稠,不好剝離模組功能。造成後續修改難度加大,所謂 動一發而牽全身 當你的 粘稠在一起的時候,就代表你的 需要重寫了。那麼避免這些個事情的發生,...

高內聚,低耦合

內聚,更為專業的說法叫功能內聚,是對軟體系統中元素職責相關性和集中度的度量。如果元素具有高度相關的職責,除了這些職責內的任務,沒有其它過多的工作,那麼該元素就具有高內聚性,反之則為低內聚性。其實結合oop的思想,高內聚應該是更加趨向於介面化,工廠模式可以很容易體現這種思想。即方法呼叫,只要通過相應的...