Масштабирование “Контактов” gwt (демонстрационный проект) AppController с MVP

Я просто изучаю GWT, таким образом, я все еще пытаюсь разобраться во всех его причудах и функциях. Я прочитываю пример, который они дают иллюстрированию шаблона MVP, и я в значительной степени получаю его, кроме я задаюсь вопросом об одной вещи.

AppController, который они используют, реализует интерфейс ValueChangeHandler, и onValueChange метод инициирован, когда история изменяется.

Моя проблема с этим onValueChange в AppController (я включал его ниже для любого, кто не видел демонстрационный проект). Это делает сравнение строк на представленном маркере истории и инстанцирует соответствующего предъявителя для обработки действия. Это все великолепно для демонстрационного приложения с 3 действиями, но как можно было бы масштабировать это к реальному приложению со значительно большим количеством действий?

Придерживание этого шаблона привело бы к довольно большому/ужасному else if, но я все еще слишком плохо знаком с GWT (и Java) для выведения лучшего шаблона для объемных приложений.

Любая справка значительно ценится!

public class AppController implements Presenter, ValueChangeHandler<String> {

  ...

  public void onValueChange(ValueChangeEvent<String> event) {
    String token = event.getValue();

    if (token != null) {
      Presenter presenter = null;

      if (token.equals("list")) {
        presenter = new ContactsPresenter(rpcService, eventBus, new ContactsView());
      }
      else if (token.equals("add")) {
        presenter = new EditContactPresenter(rpcService, eventBus, new EditContactView());
      }
      else if (token.equals("edit")) {
        presenter = new EditContactPresenter(rpcService, eventBus, new EditContactView());
      }

      if (presenter != null) {
        presenter.go(container);
      }
    }
  } 
}
12
задан brad 1 April 2010 в 14:30
поделиться

2 ответа

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

Однако новая функциональность GWT2 UIBinder и MVP действительно упрощает ситуацию. Фактически, автор вышеупомянутого сообщения в блоге написал о фреймворке places (который является частью GWT 2.1) здесь .

6
ответ дан 2 December 2019 в 23:19
поделиться

Единственное событие, которое должен получать метод onValueChange - это событие "изменение вида". Учитывая, что каждое условие - это 1 строка, оно никогда не будет таким большим. В конце концов, вы будете в порядке, используя этот шаблон.

Как сказал Ларс, сочетать UiBinder с шаблоном MVP очень просто, это значительно сократит количество строк кода и сделает ваш код более легким для модификации.

0
ответ дан 2 December 2019 в 23:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: