Pregunta

Estamos utilizando el patrón MVP y GWT y me pregunto cómo y cuándo la inyección de dependencia se debe utilizar.

Tenemos una App Controller, presentadores, Vistas y el código de modelo. De la lectura del tutorial GIN en http://code.google.com/p / google-gin / wiki / GinTutorial # WHB parecería que se debe utilizar en el nivel más alto posible (por lo que en la App Controller).

¿Debo usar para crear mis presentadores, por lo que puedo hacer injector.getPresenter ();

¿Fue útil?

Solución

No hay lugar requerido en su aplicación para la inyección utilización dependencia. Se podría utilizar para una vista o un módulo, o usarlo en todas partes. De cualquier manera, no hay ninguna razón para no hacer el inyector disponibles en el nivel más alto posible (es decir, el controlador de la aplicación).

cuando para utilizar la inyección de dependencias, yo diría que donde quiera que desea probar un componente de su sistema sin tener que cargar las dependencias reales de gran peso.

Tenga en cuenta tratando de prueba que este método devuelve 3:

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

No sería capaz de cargar y ejecutar sin esa gran dependencia del tiempo de comprobación, es decir, el acceso a la red, el tiempo de espera / control de fallos, etc.

Esto es mucho mejor:

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

De este modo, la prueba solo puede pasar en un simulacro de esta dependencia, como:

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

Si un componente no tiene ninguna dependencia, lo cual es poco probable, entonces no es necesario que la inyección de dependencias para el uso a él.

Los presentadores suelen tener una dependencia de la vista, que puede ser fácilmente burlado por pruebas rápidas (prueba utilizando JUnit, no pruebas de GWT). También pueden depender de una EventBus, o algo similar, que puede ser fácilmente burlado a centrarse en la prueba lógica del presentador.

La inyección de dependencia trata de facilitar las pruebas tanto como se trata de separar la responsabilidad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top