2010-11-12 55 views

回答

5

在您的應用中沒有必要使用依賴注入。您可以將它用於一個視圖或模塊,或在任何地方使用它。無論哪種方式,沒有理由不在最高級別(即您的應用程序控制器)上提供噴油器。

至於使用依賴注入,我會說你想測試你的系統的一個組件,而無需加載真正的重量級的依賴關係。

考慮試圖測試該方法返回3:

public int returnsThree() { 
    new WeatherChecker().checkTheWeather(); 
    return 3; 
} 

您將無法在不加載和運行的大氣候檢查的依賴,這意味着網絡接入,超時/故障處理等。

這是好多了:

public int returnsThree(WeatherChecker dep) { 
    dep.checkTheWeather(); 
    return 3; 
} 

這樣一來,你的測試可以只通過一個模擬的這種依賴,比如:

public class MockWeatherChecker extends WeatherChecker { 
    @Override 
    public void checkTheWeather() { 
    // do nothing 
    } 
} 

如果組件沒有任何依賴關係,這不太可能,那麼您不需要爲其使用依賴關係注入。

演示者通常對視圖具有依賴性,可以輕鬆地將其嘲笑爲更快的測試(使用JUnit進行測試,而不是GWT測試)。他們也可能依賴於EventBus或類似的東西,這些東西很容易被模擬出來,專注於測試演示者的邏輯。

依賴注入是關於促進測試,就像分離責任一樣。

+1

謝謝傑森,你的答案可能是我見過的依賴注入的最佳簡短描述。肯定填補了空白。 – K2J 2010-11-15 08:52:18