物件導向程式 低耦合、高內聚 - 內聚編 (Cohesion)

749 字
4 分鐘
物件導向程式 低耦合、高內聚 - 內聚編 (Cohesion)

1. 功能內聚力 (Functional Cohesion)#

一個模組只做一件事情,即具有唯一功能。

模組從事與問題相關的單一功能:是 Why so good:可以重用、便於維護、利於擴展


2. 順序內聚力 (Sequential Cohesion)#

模組內具有多個功能,且一功能的輸出立即成為下一功能的輸入(執行順序有相關性),且共用相同的資料。

模組從事與問題相關的單一功能:否 模組內各活動的關係:共用相同資料 資料是否有序:是


3. 溝通內聚力 (Communicational Cohesion)#

模組內具有多個功能,但它們的執行順序沒有相關性,且共用相同的資料。

模組從事與問題相關的單一功能:否 模組內各活動的關係:共用相同資料 資料是否有序:否 Why so bad:難以重用


4. 程序內聚力 (Procedural Cohesion)#

模組內具有多個功能,這些功能必須按照一定的順序來執行,但不共用資料。 這些功能群集在一個模組內僅為了確保它們的執行順序。

模組從事與問題相關的單一功能:否 模組內各活動的關係:流程控制 流程是否有序:是 Why so bad:功能與模組間其他功能低相關卻與其他模組高相關、難以重用 How to fix:把要做的事abstract,如讓database等功能能直接處理read和update


5. 暫時內聚力 (Temporal Cohesion)#

模組內具有多個功能,但它們的執行順序沒有相關性,只必須在同一時間內執行完成。 初始化(Initialize)系統、設定一組變數的初值。

模組從事與問題相關的單一功能:否 模組內各活動的關係:流程控制 流程是否有序:否 Why so bad:功能與模組間其他功能低相關卻與其他模組高相關、難以重用 How to fix:系統送initialization訊息,把初始化工作交給各個component自己做


6. 邏輯內聚力 (Logical Cohesion)#

模組內具有多個邏輯上相關聯的功能。 模組的控制權操縱由上層模組所傳遞之參數來決定。 如,input可以是tape,disk或network,但要用參數決定。

模組從事與問題相關的單一功能:否 模組內各活動的關係:無關 功能邏輯是否相關:是 Why so bad:難以理解、難以重用 How to fix:將邏輯上的功能用子類別去override


7. 偶發內聚力 (Coincidental Cohesion)#

一個模組內部需要執行多件工作,且每件工作都不相干

模組從事與問題相關的單一功能:否 模組內各活動的關係:無關 功能邏輯是否相關:否 Why so bad:難以維護、難以重用 How to fix:將各個功能獨立出來自成一模組,使其成為功能內聚力


參考文獻#

文章分享

如果這篇文章對你有幫助,歡迎分享給更多人!

物件導向程式 低耦合、高內聚 - 內聚編 (Cohesion)
https://linziyou.info/posts/2020-05-08-物件導向程式-低耦合高內聚-內聚編-cohesion/
作者
Lin Ziyou
發布於
2020-05-08
許可協議
CC BY-NC-SA 4.0
最後更新於 2020-05-08,距今已過 2124 天

部分內容可能已過時

Profile Image of the Author
Lin Ziyou
Hi! I'm Jerry~
分類
標籤
站點統計
文章
45
分類
8
標籤
10
總字數
43,470
運作天數
0
最後活動
0 天前

目錄