2011-09-13 82 views
1

您能否簡要解釋一下:工廠設計模式中的依賴注入主要有哪些不同?工廠設計模式的主要區別在於依賴注入嗎?

此外:是否可以通過代碼示例非常簡單地演示差異?

感謝

+0

依賴注入的語義因每個框架而異,不能很容易地演示,儘管它基本上是爲你定義實例的代碼。使用搜索引擎很容易找到[工廠模式](http://en.wikipedia.org/wiki/Factory_method_pattern)代碼示例。此外,許多** DI **框架嚴重依賴於創建模式,如**工廠模式**。 –

+0

[DI和工廠模式之間有什麼區別?]的可能的重複(http://stackoverflow.com/questions/2598659/whats-the-difference-between-di-and-factory-patterns) –

回答

2

隨着工廠(或任何其他創建模式),調用者必須知道如何獲取對象,並且必須在消費之前「明確」地請求它。使用DI時

Car car = CarFactory.getCarByModel(LUXURY); 

然而,有責任傳遞所需的對象委託給它知道如何創建對象(通過讀取已定義的配置),並將其提供給一些外部(容器居多)實體來電者默默地。

Car car = getCar(); 
void setCar(Car car){..} // container sets the car fromoutside 
0

同樣的目標與兩個模式實現的,它只是你所擁有,而與DI您使用現有的DI框架來爲你做這項工作寫代碼的工廠設計模式,簡單地做配置的依賴關係。有了工廠模式,你必須爲你編寫工廠類。

+0

依賴注入是一種方式設計課程並且不需要容器。容器恰好是處理構建對象圖的一種便捷方式。 – ColinD

2

工廠模式通常用於重複創建具有可能複雜實例化邏輯的對象的實例。這樣,您的類知道工廠和請求實例的

依賴注入更進一步到完全抽象掉的實例化邏輯,只要你的等級有關。你的代碼需要關心的是聲明他們需要的依賴關係,而不會打擾他們來自哪裏。

對於一個很好的深入指導,請參閱Inversion of Control Containers and the Dependency Injection pattern