什么是組合根
定義:指的是在應用程序中的單一邏輯區塊位置,在這會將各個模塊組合起來。
組合根指的不是一個方法、也不是一種類別,而是一種概念。
為什么要有組合根
在沒有組合根時,我們對于依賴的“New”操作常常都會放在構造函數中,這會產生三個問題
- 對應類可能過于關注了具體的依賴細節
- 不利于更改
- 其系統的依賴關系不能見其全貌,分散在各個類的構造函數中。
這時我們常會通過依賴注入的三種形式將對應的依賴關系交給第三方集中處理。這個集中處理的地方也就是組合根。
組合根的去處
基于以上的問題,我們將依賴關系集中處理,那它應該放在哪里?
盡可能靠近應用程序的入口(啟動)點。這個地方就是組合根,組合根是應用程序中組合模塊的(最好)唯一位置。
補充與注意事項
- 組合根常與依賴注入和容器相伴,但組合根的概念并不局限于兩者。
- 應該只讓組合根使用容器,而且也應該只在組合根中使用容器。