GWT MVP когда и как использовать Dependency Injection - PullRequest
2 голосов
/ 12 ноября 2010

Мы используем шаблон MVP и GWT, и мне интересно, как и когда следует использовать внедрение зависимостей.

У нас есть контроллер приложений, докладчики, представления и код модели.Из прочтения учебника по GIN на http://code.google.com/p/google-gin/wiki/GinTutorial#whb может показаться, что вы должны использовать его на максимально возможном уровне (как в App Controller).

Должен ли я использовать его для создания своих докладчиков, чтобы я мог делать injector.getPresenter ();

1 Ответ

5 голосов
/ 12 ноября 2010

В вашем приложении нет необходимого места для использования внедрения зависимостей. Вы можете использовать его для одного представления или модуля, или использовать его везде. В любом случае, нет причин не делать инжектор доступным на максимально возможном уровне (т. Е. В вашем контроллере приложений).

Что касается , когда использует внедрение зависимостей, я бы сказал, где бы вы ни хотели протестировать компонент вашей системы без необходимости загружать реальные тяжелые зависимости.

Попробуйте проверить, что этот метод возвращает 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). Они также могут зависеть от EventBus или чего-то подобного, что может быть легко смоделировано, чтобы сосредоточиться на тестировании логики докладчика.

Внедрение зависимостей - это как облегчение тестирования, так и разделение ответственности.

...