回答
依賴注入只是意味着不是類的決定哪些對象是爲了正常工作需要它從外面通過這些對象。
在正常的發展,我們的對象決定自己的班級具體地說,就像這樣:
public class MyClass
{
private var m_someObj:SomeObj = null;
public function MyClass()
{
this.m_someObj = new SomeObj;
}
}
移動到依賴注入,MyClass
現在得到來自外部的依賴關係:
public class MyClass
{
private var m_someObj:SomeObj = null;
public function MyClass(obj:SomeObj):void
{
this.m_someObj = obj;
}
}
var myClass:MyClass = new MyClass(new SomeObj);
在這個例子中,我們在構建MyClass
時傳入SomeObj
類。你也可以使用公共變量/屬性。通過構造函數傳遞對象對重要的依賴關係很有用。
現在爲了使其具有實際意義,我們可以使用接口而不是具體的類。這讓我們改變MyClass
行爲很容易:
public interface ISomeObj
{
}
public class SomeObjImplA implements ISomeObj
{
}
public class SomeObjImplB implements ISomeObj
{
}
public class MyClass
{
private var m_someObj:ISomeObj = null;
public function MyClass(obj:ISomeObj):void
{
this.m_someObj = obj;
}
}
var myClass1:MyClass = new MyClass(new SomeObjImplA);
var myClass2:MyClass = new MyClass(new SomeObjImplB);
給你舉一個例子,ISomeObj
接口可以描述一個渲染器。類將使用正常的addChild()
技術渲染,而SomeObjImplB
類將使用blitting渲染。現在,只需更改一個參數即可更改呈現MyClass
對象的方式 - MyClass
類不需要知道它是否正常呈現或通過blitting呈現。
決定傳遞給MyClass
的類別的對象是所謂的注入器。它如何決定要注入哪一類是你獲得靈活性的地方。例如,您可以加載一個包含要注入的類的XML對象,或使用反射,這就是Robotlegs我認爲的工作方式。
32bitkid發佈的鏈接是對原理的很好的解釋,但這是它的要點。您也可以查看wiki page。對於獎勵積分,請閱讀Inversion of Control,這有點相關。
使用界面來使用不同類別的函數(在擴展它們的類的形式)是接口的主要目的之一。那麼我想知道爲什麼這種行爲被特別稱爲「依賴注入」,因爲正如你所提到的那樣,它通常是通過接口完成的。 – 2012-01-01 05:58:52
實際的「依賴注入」是將依賴關係傳遞給一個類。接口只是使這種模式特別有用 – divillysausages 2012-01-01 13:37:51
- 1. 什麼意思是依賴注入?
- 2. 此代碼示例中的@是什麼意思?
- 3. 此代碼示例中的「{0:X2}」是什麼意思?
- 4. Android授權示例返回代碼3.這是什麼意思?
- 5. 什麼是依賴注入?
- 6. Topojson示例數據是什麼意思?
- 7. 代碼是什麼意思?
- 8. 是什麼代碼是什麼意思?
- 9. 0x0F是什麼意思?這個代碼是什麼意思?
- 10. 是什麼意思?=在僞代碼中使用時的意思?
- 11. 什麼是應用依賴注入
- 12. 什麼是php composer?依賴管理器是什麼意思?
- 13. 在maven依賴項中鍵入「bundle」是什麼意思?
- 14. 依賴注入演示
- 15. 什麼時候使用依賴注入?
- 16. 什麼是依賴注入,爲什麼要使用它?
- 17. 依賴注入的實際用例是什麼?
- 18. MSI日誌文件顯示「注意:1:2729」是什麼意思?
- 19. 什麼是「手動依賴注入」?
- 20. 使用Angular Javascript的精確示例的依賴注入
- 21. 這個代碼示例中的double splat(**)參數是什麼意思,爲什麼使用它?
- 22. PHP依賴注入。我的代碼實際上是依賴注入容器嗎?
- 23. 這段代碼是什麼意思...?
- 24. 這個CSS代碼是什麼意思?
- 25. 這段Ruby代碼是什麼意思?
- 26. 這段代碼是什麼意思?
- 27. 這段代碼是什麼意思?
- 28. 這個javascript代碼是什麼意思?
- 29. 這段代碼是什麼意思?
- 30. 代碼段是什麼意思?
這篇文章演示了在php中的概念,但它仍然是一個很好的基礎:http://fabien.potencier.org/article/11/what-is-dependency-injection – 2011-12-31 15:45:23