我一直在閱讀依賴注入,並且我理解如何在XML中指定依賴關係的吸引力,就像在許多框架中所做的那樣。我在一個大型系統上工作,在這個系統中,我們通常會調用工廠來獲取具體對象,並且正在努力理解爲什麼手動注入的依賴項爲什麼in this Wikipedia article被認爲更好。爲什麼依賴注入比使用工廠更好?
在我看來,調用一個工廠是更好,因爲:
- 調用代碼不需要知道或關心一個特定的依賴關係存在。
- 調用代碼並不需要改變,如果新的依賴被添加到被叫方。
- 調用代碼並不需要有專門爲選擇具體的實例來注入任何邏輯。
在我看來,這種依賴注入僅提供好處,當調用代碼有決定對依賴具體的類。幾乎就像「這是我的數據,現在處理它。」
有什麼我錯過了什麼?
更新: 澄清,我們現有的代碼主要是直接調用工廠。因此,要獲得一個新的球對象,你會看到這樣的代碼:
Ball myBall = BallFactory.getObject();
很多的工廠都實現以允許新的具體對象類型的運行時間登記 - 一個插件框架。
所以在看一些看起來像DI的初步意見後,我調用的代碼通常不會傳中,球對象,而是將BallFactory。我想這樣做的好處是,類可能更通用,因爲它甚至沒有耦合到它使用的工廠。
您是否將那些工廠作爲參數傳遞給需要的對象?那就是*依賴注入*。 – deceze 2012-08-17 13:57:19
你是在談論工廠類還是靜態工廠方法?無論如何,工廠是你通常如何實現依賴注入。 – 2012-08-17 14:28:50
依賴注入爲您的工作,爲你,不用你。這就是原因(假設你正在使用依賴注入框架)。 – 2012-08-17 15:30:50