我們正在使用MVP模式和GWT,我想知道應該如何以及何時使用依賴注入。GWT MVP何時以及如何使用依賴注入
我們有一個應用程序控制器,演示者,視圖和模型代碼。從閱讀GIN教程http://code.google.com/p/google-gin/wiki/GinTutorial#whb看來,你應該儘可能在最高級別使用它(所以在App Controller中)。
我應該用它來創建我的演示者,所以我可以做injector.getPresenter();
我們正在使用MVP模式和GWT,我想知道應該如何以及何時使用依賴注入。GWT MVP何時以及如何使用依賴注入
我們有一個應用程序控制器,演示者,視圖和模型代碼。從閱讀GIN教程http://code.google.com/p/google-gin/wiki/GinTutorial#whb看來,你應該儘可能在最高級別使用它(所以在App Controller中)。
我應該用它來創建我的演示者,所以我可以做injector.getPresenter();
在您的應用中沒有必要使用依賴注入。您可以將它用於一個視圖或模塊,或在任何地方使用它。無論哪種方式,沒有理由不在最高級別(即您的應用程序控制器)上提供噴油器。
至於當使用依賴注入,我會說你想測試你的系統的一個組件,而無需加載真正的重量級的依賴關係。
考慮試圖測試該方法返回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或類似的東西,這些東西很容易被模擬出來,專注於測試演示者的邏輯。
依賴注入是關於促進測試,就像分離責任一樣。
謝謝傑森,你的答案可能是我見過的依賴注入的最佳簡短描述。肯定填補了空白。 – K2J 2010-11-15 08:52:18