討論個有關模組化設計的問題
場景:
在 golang,現在的程式中有兩個模組,於是建立了 package A 和 package B。 由於業務邏輯的特殊性,B 中有一個子模組 C,C 中有一個子模組 D,D 模組的初始化/建構函式依賴於外部的 A 模組中的一個值。除此之外, B 包中的任何方法、屬性 都與 A 包無任何關聯。 B 模組的初始化過程中會初始化子模組 C,C 模組的初始化過程中會初始化子模組 D。
問題:
基於以上的情況
- 該如何設計當前的模組結構才是最合適的呢?
- 鑑於模組化 “高內聚低耦合” 的設計原則,A 和 B 兩個模組 除了 子模組 D 依賴 A 中的一個值這一點之外,沒有任何交集
- 如果把 A 和 B 完全打通搞成同一個模組,違背了高內聚的原則,而目前的 A B 分開的模組結構,又存在業務邏輯上的這種特殊依賴,產生了讓人不太舒服的耦合度
- 場景只是就事論事舉個例子,真實的業務場景中肯定不止 ABCD 這四個模組,B 中還會有很多其他的子模組,A 中亦然,所以大家沒必要糾結我的場景為什麼把四個模組要搞出這種奇怪的模組結構,我相信這樣的情景在很多業務場景中都存在。
補充:
我們暫且稱 D 所依賴的那個值為 x, x 需要依賴於 A 模組中某個方法的執行結果,也就是說 正常情況下任何程式模組想拿到 x 值,需要先例項化 A,然後呼叫 A.GetXValue() 方法獲取。 不僅如此,在 D 模組中,依賴 x 的方法可能是一個私有方法,也就是 golang 中小寫字母開頭的簽名方法。這樣一來,可能有好幾個方法會因為 x 這一個值的依賴被強迫強耦合起來。
更多原創文章乾貨分享,請關注公眾號
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- 各位道友,進來討論個介面設計問題!
- 關於考勤模組中設計的問題
- 一個XML資料統計問題,期待大家的討論XML
- [討論]關於一個設計方面的問題――主動物件和被動物件中的方法定義物件
- 有關C++引數傳值的一個問題探討C++
- 關於程式設計風格的討論 (轉)程式設計
- 有關於論文投稿的問題
- 勘察設計單位引入現代專案管理有關問題的探討1(轉)專案管理
- 勘察設計單位引入現代專案管理有關問題的探討2(轉)專案管理
- 勘察設計單位引入現代專案管理有關問題的探討3(轉)專案管理
- 請教有關template設計模式的問題設計模式
- 有關asp程式設計中,baseclass的問題程式設計
- 關於網站設計的一點點討論網站
- 一個關於月球車的筆試題--求討論筆試
- 從前端模組化程式設計切入想聊聊前端的未來(文末有我想問的問題)前端程式設計
- K君關於“IT 新人就業方向問題“討論就業
- 關於aio的設定的討論AI
- J2EE相關設計模式討論設計模式
- 有關介面測試的用例設計問題
- AI面臨的五個蛋白質設計問題,Nature找了一群專家來討論AI
- 和開發同學討論的一個技術問題
- 提一個巨難的問題,請高手們來討論..
- 關於資料庫 Block 儲存細節問題的討論資料庫BloC
- 關於javascript中陣列元素刪除問題的討論 (轉)JavaScript陣列
- Gear: 一個 Go web framework 的設計思考和討論GoWebFramework
- 關於論壇的設計方式以及快取新增的問題?快取
- laravel 事件系統 問題討論Laravel事件
- 關於一個建立型模式的討論:模式
- 請問這論壇開發有討論群不
- 請問一個有關jdbc效能的問題JDBC
- 關於FlyWeight模式設計的一個問題模式
- 表結構設計討論
- 功能,介面,類之間轉化,設計的原則的討論。
- 關於在web project專案中的程式碼重用問題討論WebProject
- 關於“斯金納箱”及相關理論在遊戲設計中應用的討論遊戲設計
- 有關單體模式設計的問題,請大家幫忙模式
- 近期討論過的一些MySQL問題MySql
- 有關 socialiteproviders 存在的幾個問題IDE