高內聚,低耦合的實現方式
高內聚低耦合,是軟體工程中的概念,是判斷軟體設計好壞的標準,主要用於程式的物件導向的設計,主要看類的內聚性是否高,耦合度是否低。
目的是使程式模組的可重用性、移植性大大增強。通常程式結構中各模組的內聚程度越高,模組間的耦合程度就越低。
內聚是從功能角度來度量模組內的聯絡,一個好的內聚模組應當恰好做一件事,它描述的是模組內的功能聯絡;耦合是軟體結構中各模組之間相互連線的一種度量,耦合強弱取決於模組間介面的複雜程度、進入或訪問一個模組的點以及通過介面的資料。
降低耦合度的方法
1、少使用類的繼承,多用介面隱藏實現的細節。 Java物件導向程式設計引入介面除了支援多型外, 隱藏實現細節也是其中一個目的。
2、模組的功能化分儘可能的單一,道理也很簡單,功能單一的模組供其它模組呼叫的機會就少。(其實這是高內聚的一種說法,高內聚低耦合一般同時出現)。
3、遵循一個定義只在一個地方出現。
4、少使用全域性變數。
5、類屬性和方法的宣告少用public,多用private關鍵字。
6、多用設計模式,比如採用MVC的設計模式就可以降低介面與業務邏輯的耦合度。
7、儘量不用“硬編碼”的方式寫程式,同時也儘量避免直接用SQL語句運算元據庫。
8、最後當然就是避免直接操作或呼叫其它模組或類(內容耦合);如果模組間必須存在耦合,原則上儘量使用資料耦合,少用控制耦合,限制公共耦合的範圍,避免使用內容耦合。
增強內聚度方法
1、模組只對外暴露最小限度的介面,形成最低的依賴關係。
2、只要對外介面不變,模組內部的修改,就不得影響其他模組。
3、刪除一個模組,應當隻影響有依賴關係的其他模組,而不應該影響其他無關部分。
相關文章
- 高內聚低耦合
- Java 工程解耦即高內聚低耦合Java解耦
- 精通介面隔離原則,輕鬆實現高內聚、低耦合架構架構
- 分散式系統關注點——「高內聚低耦合」詳解分散式
- 如何設計一個高內聚低耦合的模組——MegEngine 中自定義 Op 系統的實踐經驗
- 高聚合低耦合 - theregister
- 如何實現軟體設計中的高凝聚和鬆耦合? - thevaluable
- MHA高可用架構的實現方式架構
- 假陰影,低開銷的陰影實現方式
- UITableView佔點陣圖的低耦合性設計UIView
- Web前端------JS高階繼承的實現方式Web前端JS繼承
- 譜聚類的python實現聚類Python
- 匿名內部類方式實現執行緒的建立執行緒
- Spring使用實現類注入為什麼會導致高耦合度(舉例)Spring
- 杉巖資料實現與OpenStack的全面緊耦合
- 高/低方差、高/低偏差
- C均值聚類 C實現 Python實現聚類Python
- 基於 RocksDB 實現高可靠、低時延的 MQTT 資料持久化MQQT持久化
- 簡單的低開編輯器(三):實現元件畫布內拖拽元件
- html隨意拖動內容位置的兩種實現方式HTML
- 高+低
- 低開開發筆記(四):實現編輯器內拖拽筆記
- Python完美詮釋"高內聚"概念的IO流API體系結構PythonAPI
- Python 完美詮釋"高內聚"概念的 IO 流 API 體系結構PythonAPI
- 盤點國內高投資低票房的電影鉅製
- 面試官:Redis中列表的內部實現方式是什麼?面試Redis
- 面試官:Redis中字串的內部實現方式是什麼?面試Redis字串
- 繼承的實現方式繼承
- Flink的Task實現方式
- iOS 實現自動登入(從低階做法到高階做法)iOS
- 交流耦合與直流耦合
- MVO優化DBSCAN實現聚類優化聚類
- 高除低
- 短影片直播系統,實現高併發秒殺的多種方式
- 創新工作方式:低程式碼拖拉拽實現業務流程智慧化
- 實現簡單的`Blazor`低程式碼Blazor
- 面試官:Redis中有序集合的內部實現方式是什麼?面試Redis
- Spring實現IOC容器的兩種實現方式Spring