我一直在閱讀如何編寫可測試代碼,並偶然發現依賴注入設計模式。依賴注入進一步向下「鏈」
這種設計模式是很容易理解,實在沒有什麼給它,對象請求的值而不是創建它們自己。
然而,現在我在想如何能夠使用的應用IM currenty工作我知道有一些併發症它。想象一下下面的例子:
public class A{
public string getValue(){
return "abc";
}
}
public class B{
private A a;
public B(A a){
this.a=a;
}
public void someMethod(){
String str = a.getValue();
}
}
單元測試someMethod()
現在很容易,因爲我可以創建一個的模擬,並有getValue()
回我想做的事情。
B類的的依賴關係是通過構造函數注入,但是這也意味着A有B類外被實例化因此這種依賴已經轉移到另一個類來代替。這將會重複許多層,並且在某個點上實例化必須完成。
現在的問題是,在使用依賴注入的時候,是否不斷傳遞所有這些層次的依賴關係?這不會讓代碼更少可讀性和更多的時間來調試嗎?當你到達「頂層」時,你將如何測試該課程?
這不是依賴注入。你必須在實現它之後創建接口,而不是私有A在你的類b中使用私有IAia,然後傳遞構造函數對象A並將它分配給你的變量ia – 2013-04-08 12:57:25