2011-11-04 29 views
12

我一直在讀DI,它似乎是一個足夠簡單的概念。我沒有得到的是容器。假設我想創建自己的容器。像「檢測」這樣的動詞被使用,我沒有得到容器如何「檢測」一個新的依賴對象被創建並知道注入它的依賴關係。對我來說,容器似乎是一個美化的工廠。依賴注入容器?它有什麼作用?

任何人都可以解釋一個容器是如何實際實現的,或者可以指向我的資源?

謝謝!

回答

14

這是從Windsor documentation

反轉採取控制

控制

反轉是使用原則通過框架作爲 的一種方式,允許開發人員使用來擴展框架或創建應用程序10它。基本思想是框架知道程序員的對象並對它們進行調用。

這與使用API​​相反,其中開發人員的代碼使 成爲調用API代碼的原因。因此,框架反轉控制: 它不是負責的開發者代碼,而是框架 根據一些刺激來進行調用。

您可能在以下情況下開發 這一原則,即使您不知道它。

控制反轉容器

控制容器的反演使用上面陳述 原則(簡而言之)管理的類。也就是說,它們的創建,銷燬,生命週期,配置和依賴關係。這種方式不需要 獲得和配置他們依賴的類。這個 大大減少了系統中的耦合,因此,簡化了重用和可測試性。

人們認爲「控制反轉 」是「控制容器反轉」的同義詞,人們產生了一些混淆。如 所述,控制反轉是一個更廣泛的原則。

通常人們都認爲這是關於「注射」,並且廣播 這是IoC容器的主要目的。其實 「注入」是一種結果,是一種解耦的手段,而不是主要的目的。

2

您可能想要讀這本書Dependency Injection In .NET ......我已經閱讀過了,我強烈建議您閱讀它。它首先給出了關於DI的一個很好的和有見地的解釋,然後展示了關於DI的真實世界應用的代碼和模式。

這本書,並在太少的話...

"DI container is the technology used to support the DI technique" Page 55 
+0

+1看起來很不錯。謝謝。 –

+1

是的。 Btw Mark Seeman主動在stackoverflow上寫下你可以很容易的找到他並直接問他,我相信。 – renatoargh