Frage

Wir sind mit dem MVP-Muster und GWT und ich frage mich, wie und wann Dependency Injection verwendet werden soll.

Wir haben eine App Controller, Vorführer, Ansichten und Modell-Code. Aus der Lektüre der GIN-Tutorial unter http://code.google.com/p / google-gin / wiki / GinTutorial # whb es scheint, dass Sie es auf höchstem Niveau möglich (so in der App Controller) verwenden soll.

Sollte ich es meine Moderatoren zu erstellen, so dass ich injector.getPresenter tun kann ();

War es hilfreich?

Lösung

Es gibt keinen erforderlichen Platz in Ihrer App verwendet Dependency Injection. Man könnte es für eine Ansicht oder ein Modul verwenden, oder es überall benutzen. So oder so, es gibt keinen Grund, nicht den Injektor verfügbar auf dem höchstmöglichen Niveau zu machen (das heißt, Ihre App Controller).

Wie bei , wenn Dependency Injection zu verwenden, würde ich sagen, wohin Sie eine Komponente des Systems testen wollen, ohne wirkliche schwere Abhängigkeiten laden zu müssen.

Betrachten wir zum Test versuchen, dass diese Methode zurück 3:

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

Sie würden nicht ohne Belastung der Lage sein und laufen, dass große Wetter-Überprüfung Abhängigkeit, was bedeutet, Netzzugang, Timeout / Fehlerbehandlung, etc.

Das ist viel besser:

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

Auf diese Weise Ihr Test kann in einem Mock passiert nur für diese Abhängigkeit, wie:

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

Wenn eine Komponente keine Abhängigkeiten haben, was unwahrscheinlich ist, dann müssen Sie nicht verwenden Dependency Injection für sie.

Präsentatoren haben in der Regel eine Abhängigkeit von der Ansicht, die leicht für schnellere Tests verspottet werden kann (Test JUnit verwenden, nicht GWT-Tests). Sie kann auch von einem EventBus, oder etwas ähnliches, was leicht zu konzentrieren verspottet heraus Testen Logik des Moderators werden kann.

Injektion Abhängigkeit ist über das Testen, so viel Erleichterung wie es geht um Verantwortung zu trennen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top