GWT MVP何时和何时;如何使用依赖注入
我们正在使用MVP模式和GWT,我想知道应该如何以及何时使用依赖注入 我们有一个应用程序控制器、演示者、视图和模型代码。从阅读GIN教程来看,您似乎应该尽可能在最高级别使用它(在App Controller中也是如此)GWT MVP何时和何时;如何使用依赖注入,gwt,dependency-injection,gwt-gin,Gwt,Dependency Injection,Gwt Gin,我们正在使用MVP模式和GWT,我想知道应该如何以及何时使用依赖注入 我们有一个应用程序控制器、演示者、视图和模型代码。从阅读GIN教程来看,您似乎应该尽可能在最高级别使用它(在App Controller中也是如此) 我是否应该使用它来创建演示者,以便执行injector.getPresenter() 应用程序中没有使用依赖项注入所需的位置。您可以将其用于一个视图或模块,也可以在任何地方使用。无论哪种方式,都没有理由不在最高级别(即您的应用程序控制器)上提供注入器 至于何时使用依赖项注入,我想
我是否应该使用它来创建演示者,以便执行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测试)。它们也可能依赖于事件总线或类似的东西,可以很容易地模拟出来,以集中测试演示者的逻辑
依赖注入既能促进测试,又能分离责任。谢谢Jason,你的回答可能是我见过的对依赖注入最好的简短描述。当然填补了空白。