图解高内聚与低耦合
模塊
模塊就是從邏輯上將系統(tǒng)分解為更細微的部分, 分而治之, 復(fù)雜問題拆解為若干簡單問題, 逐個解決.
耦合主要描述模塊之間的關(guān)系, 內(nèi)聚主要描述模塊內(nèi)部. 模塊的粒度可大可小,?可以是函數(shù), 類, 功能塊等等.
耦合
模塊之間存在依賴, 導(dǎo)致改動可能會互相影響, 關(guān)系越緊密, 耦合越強, 模塊獨立性越差.
比如模塊A直接操作了模塊B中數(shù)據(jù), 則視為強耦合, 若A只是通過數(shù)據(jù)與模塊B交互, 則視為弱耦合.
獨立的模塊便于擴展, 維護, 寫單元測試, 如果模塊之間重重依賴, 會極大降低開發(fā)效率.?
內(nèi)聚
模塊內(nèi)部的元素, 關(guān)聯(lián)性越強, 則內(nèi)聚越高, 模塊單一性更強. 一個模塊應(yīng)當(dāng)盡可能獨立完成某個功能,?
如果有各種場景需要被引入到當(dāng)前模塊, 代碼質(zhì)量將變得非常脆弱, 這種情況建議拆分為多個模塊.
低內(nèi)聚的模塊代碼, 不管是維護, 擴展還是重構(gòu)都相當(dāng)麻煩, 難以下手.
接口設(shè)計原則
好的接口應(yīng)當(dāng)滿足設(shè)計模式六大原則,?很多設(shè)計模式, 框架都是基于高內(nèi)聚低耦合這個出發(fā)點的.
外觀模式
為系統(tǒng)中多個子系統(tǒng)提供一致的對外調(diào)用, 對客戶端隱藏子系統(tǒng)細節(jié), 降低其與子系統(tǒng)的耦合.
橋接模式
JDBC中的把面向廠商的接口(Driver)和面向使用者的API(DriverManager)做了拆分隔離.
// 開發(fā)者只需要關(guān)注JDBC API, 無需關(guān)注不同數(shù)據(jù)庫Driver接口實現(xiàn) Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection(url, username, password);適配器模式
引入第三方庫(hibernate, log4j), 不應(yīng)該直接在代碼中繼承或者使用其實體類.
需要抽出上層統(tǒng)一接口, 然后增加實現(xiàn)類, 對外暴露接口.
// 代碼與log4j強耦合, 不推薦 org.apache.log4j.Logger.getRootLogger().info("info"); // 底層可以隨意更換log框架 FRLoggerFactory.getLogger().info("info");原文作者鏈接:https://www.cnblogs.com/xdecode/p/9393885.html
轉(zhuǎn)載于:https://www.cnblogs.com/zsh-blogs/p/11024434.html
總結(jié)
- 上一篇: JS滚动条到网页底部自动加载更多内容
- 下一篇: oracle 表空间