2011-05-30 183 views
2

如果您使用模擬來測試對象交互,您必須通過構造函數或特定方法傳遞協作者。在一個足夠複雜的應用程序中,您將有很多小對象彼此交互。你如何管理應用程序最頂層的整個對象圖的構造?總之,你如何處理以下幾點:管理依賴關係

// arbitrarily complex 
A a = new A(new B(new C(new D(new ...)), new E(new ...)), new F(new G(new ...))); 
a.doSomething(); 

看來,依賴注入容器是這種情況下的最佳解決方案。有沒有其他好的策略來簡化依賴管理?

回答

0

據我所知,控制所有這些依賴關係的唯一方法是創建一個可以傳遞的通用Context對象(但即使這也有它的複雜性),或者使用帶構造器注入的IoC。

尤其是在您給出的示例中,CI是一個很好的解決方案,因爲您可以通過簡單地配置容器來管理複雜性。

只是我的2美分...

+0

可能的錯字CI => DI – Gishu 2011-05-31 03:09:12

+0

CI =構造函數注入。對此感到抱歉。 – 2011-05-31 07:05:31

2

給出的例子僅僅是人的可憐的DI。只要你在應用程序的組合根目錄(入口點)限制自己到composing the entire object graph,你會很好。 (順便說一下,我最近聽說Dan North將這個稱爲'new'是新的'new' - 暗指Java社區中的人們開始回到構建對象圖的方式而不是使用容器) 。

但是,只要您遵循Register Resolve Release模式,您也可以絕對使用DI容器。特別是在基於請求的應用程序(網絡應用程序和服務)中,管理生命週期對於窮人的DI來說可能很複雜,因此在這些類型的應用程序中,容器可以非常有幫助。