討論個有關模組化設計的問題
場景:
在 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
相關文章
- Hibernate 一個更新問題的 討論
- 從前端模組化程式設計切入想聊聊前端的未來(文末有我想問的問題)前端程式設計
- 北京網路行業協會組織討論VPN相關問題行業
- 關於IC設計的一次討論
- 主題討論,第六組
- java 論壇模組設計方案Java
- 關於網站設計的一點點討論網站
- 一個關於組織學員學習技術的筆試題--求討論筆試
- 一個關於月球車的筆試題--求討論筆試
- K君關於“IT 新人就業方向問題“討論就業
- AI面臨的五個蛋白質設計問題,Nature找了一群專家來討論AI
- 有始有終,設計一個結構合理的下載模組
- 有關介面測試的用例設計問題
- JS模組化程式設計JS程式設計
- javascript 模組化程式設計JavaScript程式設計
- laravel 事件系統 問題討論Laravel事件
- 用函式實現模組化程式設計習題函式程式設計
- 淺談Abp vNext的模組化設計
- 有關 socialiteproviders 存在的幾個問題IDE
- 近期討論過的一些MySQL問題MySql
- [併發程式設計]-關於 CAS 的幾個問題程式設計
- 關於在執行 SAP ERP MM 模組 Post Goods Issue 時修改 Material Cost 的討論Go
- [提問交流]關於onethink模型這塊的討論模型
- 關於“斯金納箱”及相關理論在遊戲設計中應用的討論遊戲設計
- 關於模組化、元件化的理解元件化
- Spring-boot模組化程式設計Springboot程式設計
- 關於 Angular 應用對瀏覽器 Back 按鈕支援問題的討論Angular瀏覽器
- 小組討論結果
- [討論]資料庫設計,ER 中的實體關係如何確認?資料庫
- 討論下 RESTful 風格 API 的路由設計RESTAPI路由
- 簡述JavaScript模組化程式設計(二)JavaScript程式設計
- iOS 元件化/模組化架構設計實踐iOS元件化架構
- 關於教育機器人的模組式程式設計機器人程式設計
- 關於BSS資料化轉型的幾點討論
- 有關模型關聯的問題模型
- 位元組跳動面試官這樣問有關字串的問題!!面試字串
- 商品模組設計
- 有沒有一些大廠的高階架構技術討論討論架構