高內聚低耦合
高內聚低耦合,是軟體工程中的概念,是判斷軟體設計好壞的標準,主要用於程式的物件導向的設計,主要看類的內聚性是否高,耦合度是否低。目的是使程式模組的可重用性、移植性大大增強。通常程式結構中各模組的內聚程度越高,模組間的耦合程度就越低。內聚是從功能角度來度量模組內的聯絡,一個好的內聚模組應當恰好做一件事,它描述的是模組內的功能聯絡;耦合是軟體結構中各模組之間相互連線的一種度量,耦合強弱取決於模組間介面的複雜程度、進入或訪問一個模組的點以及通過介面的資料。
自己的理解:
-
耦合: 模組與模組之間的聯絡。
-
內聚:一般指(東西聚集在一起)形成一個模組,例如方法,變數,物件,或者是功能模組。
-
高內聚:儘可能的讓一個模組內部的程式碼相關程度高,相互聯絡的緊密。模組內部的程式碼,相互之間的聯絡越強,內聚就越高, 模組的獨立性就越好。 一個模組應該儘量去獨立的完成一個功能!如果必須寫另外的功能,建議拆分成多個模組,低內聚的程式碼,不好維護,程式碼也不夠健壯。
-
低耦合:儘可能的將每一個功能通過模組單獨寫出去 ,然後通過指定的介面來相互聯絡,模組與模組之間的關係越是緊密,獨立性就越不好,改變一個模組可能會影響其他的模組。
小故事:
-
有一天,我和幾名同事帶著各自家人出去旅遊。當然,我和我的同事們很熟悉,但都不認識彼此家人。旅遊要好幾天。因為人多,所以需要分成若干小團體(模組),每個團體給一個對講機相互聯絡。這該怎麼安排呢?主流的方案是:按家庭分成幾個小團隊,自家人管自家人;題主和同事擔任介面人。這個方案有什麼好處呢?
-
1、高內聚,自家人在一起,家庭內部財務自理,節約管理成本;酒店房間可以讓夫妻和小孩住一間,節省出行費用。你媳婦兒要給孩子餵奶,抱起來儘管喂,用不著請示你同事
-
2、低耦合,只有涉及你們幾個家庭之間的事務才需要你們幾個介面人接頭。省心,高效。嗯,你看,自由自在又能彼此幫忙,因此大家都很愉快。
這裡有倆張圖片
低內聚,高耦合
高內聚低耦合
相關文章
- 高內聚,低耦合的實現方式
- Java 工程解耦即高內聚低耦合Java解耦
- 分散式系統關注點——「高內聚低耦合」詳解分散式
- 精通介面隔離原則,輕鬆實現高內聚、低耦合架構架構
- 高聚合低耦合 - theregister
- 如何設計一個高內聚低耦合的模組——MegEngine 中自定義 Op 系統的實踐經驗
- 高/低方差、高/低偏差
- UITableView佔點陣圖的低耦合性設計UIView
- 高+低
- 交流耦合與直流耦合
- 高除低
- Flutter高內聚元件怎麼做?閒魚打造開源高效方案!Flutter元件
- Python完美詮釋"高內聚"概念的IO流API體系結構PythonAPI
- Python 完美詮釋"高內聚"概念的 IO 流 API 體系結構PythonAPI
- 聚類(part3)--高階聚類演算法聚類演算法
- 盤點國內高投資低票房的電影鉅製
- Flutter高內聚元件怎麼做?閒魚閒魚打造開源高效方案!Flutter元件
- 耦合(一)
- 深挖1元低價高頻付費,重度小遊戲內容打磨策略遊戲
- 設計習慣比較:高凝聚/松耦合、DRY/錯誤抽象 - Jesse抽象
- 如何實現軟體設計中的高凝聚和鬆耦合? - thevaluable
- CPU使用率低負載高負載
- 一看就懂的MySQL的聚簇索引,以及聚簇索引是如何長高的MySql索引
- 科大訊飛劉慶峰再談“人機耦合”:耦合才是AI真落地AI
- Spring使用實現類注入為什麼會導致高耦合度(舉例)Spring
- x->0時,高階+低階等價於低階?為什麼
- cad版本轉換器如何操作低轉高?
- abp加DDD開發:低耦合、可複用、可擴充套件的【工單】業務模組-簡介和整合套件
- 2024-11-06 低開高走,盤中跳水
- 高開低走主力洗盤還是出貨?
- 聚微商高階貨源平臺原始碼V2.0原始碼
- 重用或複用會導致耦合,微服務是寧可重複也不耦合 - Victor Rentea微服務
- 聚勢賦能,國內數字化建設迎新節點
- Spring IOC 為什麼能降低耦合Spring
- budibase: 內建Svelte的低程式碼開發平臺
- python高階內建函式Python函式
- 軟體Bug、耦合以及因果推理 - Michael Feathers
- Go 語言如何解決程式碼耦合Go