2015-04-08 59 views
1

我想問問誰負責設置注入的依賴狀態?依賴注入和狀態設置

例如,當類A依賴於類B時,實例A的責任是設置實例B還是應該在其他地方完成?爲什麼?我有一個Context類,它處理與給定圖表的交互和狀態,例如,你可以在兩個系列之間切換。然而,這個類還通過將它們委託給其他(注入)類來設置圖表的外觀和顯示數據。目前,Context構造函數根據其構造函數參數設置其依賴關係狀態(例如:突出顯示圖表上的一點,指示要顯示的系列等)。我不確定這種設計是否合適,並希望更深入地瞭解正確的方法。編程語言是Javascript(如果它很重要)。

謝謝, 彼得

回答

1
當A類取決於B類上

,例如是A的設置實例B或責任,它應該在其他地方呢?

如果A將負責設立B的,這將使一個違反Dependency Inversion Principle(DIP),上面寫着:

高層模塊不應該依賴於低級別的模塊。 都取決於抽象。

DIP是依賴注入模式背後的驅動力。

但是如果A不能負責創建B,誰是?這個問題的答案的問題是:在Composition Root

物A組合物根是在模塊組合在一起的應用 一個(優選地)獨特的位置。

使用組合根目錄是保持A和B(以及圖中的所有內容)不受不同模塊依賴的唯一方法。