Domanda

Stiamo utilizzando il modello MVP e GWT e mi chiedo come e quando l'iniezione di dipendenza dovrebbe essere usato.

Abbiamo un App Controller, presentatori, Vista e il codice del modello. Dalla lettura il tutorial GIN a http://code.google.com/p / google-gin / wiki / GinTutorial # whb sembrerebbe che si dovrebbe usare al più alto livello possibile (così nel controller App).

devo usare per creare i miei presentatori, così posso fare injector.getPresenter ();

È stato utile?

Soluzione

Non c'è posto richiesto nella vostra app per iniezione uso dipendenza. Si potrebbe utilizzare per una vista o modulo, o usarlo ovunque. In entrambi i casi, non c'è alcun motivo per non rendere l'iniettore a disposizione al più alto livello possibile (vale a dire, il Controller App).

per quando di utilizzare l'iniezione di dipendenza, direi dove si vuole testare un componente del sistema senza dover caricare le dipendenze reali pesanti.

Si consideri cercando di prova che questo metodo restituisce 3:

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

Non sarebbe in grado di senza caricamento e l'esecuzione di quel grande dipendenza tempo-controllo, che significa accesso alla rete, timeout / movimentazione fallimento, ecc.

Questo è molto meglio:

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

In questo modo, il test può semplicemente passare un mock per questa dipendenza, come:

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

Se un componente non ha dipendenze, che è improbabile, quindi non c'è bisogno di iniezione di uso dipendenza per esso.

I presentatori hanno tipicamente una dipendenza della vista, che può essere facilmente preso in giro per le prove veloci (test con JUnit, non test GWT). Essi possono anche dipendere da un EventBus, o qualcosa di simile, che può essere facilmente preso in giro fuori di concentrarsi sulla prova logica del presentatore.

La dependency injection è di circa facilitando la sperimentazione, per quanto si tratta di separare la responsabilità.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top