K2J*_*K2J 2 gwt gwt-gin dependency-injection
我们正在使用MVP模式和GWT,我想知道如何以及何时应该使用依赖注入.
我们有App Controller,Presenters,Views和Model代码.通过阅读http://code.google.com/p/google-gin/wiki/GinTutorial#whb上的GIN教程,您似乎应该尽可能在最高级别使用它(因此在App Controller中).
我应该用它来创建我的演示者,所以我可以做injector.getPresenter();
您的应用中没有必要的位置来使用依赖注入.您可以将它用于一个视图或模块,或在任何地方使用它.无论哪种方式,都没有理由不在最高级别(即您的App Controller)上使用进样器.
至于何时使用依赖注入,我会说你想要测试系统组件的任何地方,而不必加载真正的重量级依赖项.
考虑尝试测试此方法返回3:
public int returnsThree() {
new WeatherChecker().checkTheWeather();
return 3;
}
Run Code Online (Sandbox Code Playgroud)
如果没有加载和运行那种大的天气检查依赖关系,您将无法进行,这意味着网络访问,超时/故障处理等.
这要好得多:
public int returnsThree(WeatherChecker dep) {
dep.checkTheWeather();
return 3;
}
Run Code Online (Sandbox Code Playgroud)
这样,你的测试可以传递一个模拟这个依赖,如:
public class MockWeatherChecker extends WeatherChecker {
@Override
public void checkTheWeather() {
// do nothing
}
}
Run Code Online (Sandbox Code Playgroud)
如果组件没有任何依赖关系,这是不可能的,那么您不需要为它使用依赖注入.
演示者通常依赖于视图,可以轻松地模拟出更快的测试(使用JUnit进行测试,而不是使用GWT测试).它们也可能依赖于EventBus或类似的东西,可以很容易地模拟出来,专注于测试演示者的逻辑.
依赖注入是关于促进测试,就像分离责任一样.
| 归档时间: |
|
| 查看次数: |
1853 次 |
| 最近记录: |