我们正在使用MVP模式和GWT,我想知道如何以及何时使用依赖注入。

我们有一个应用程序控制器,演示者,视图和模型代码。从阅读杜松子酒教程 http://code.google.com/p/google-gin/wiki/gintutorial#whb 似乎您应该在最高级别上使用它(因此在应用程序控制器中)。

我是否应该使用它来创建我的演示者,以便我可以做indector.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测试测试)。它们也可能取决于事件总线或类似的内容,可以轻松地嘲笑这些内容,以专注于测试演示者的逻辑。

依赖注射是关于促进测试与分离责任一样多的促进。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top