Pytanie Skalowanie "kontaktów" Gwta (przykładowy projekt) AppController z MVP


Właśnie uczę się GWT, więc wciąż próbuję rozwiązać wszystkie jego dziwactwa i cechy. Czytam przykład, który podają ilustrując wzór MVP, i prawie to rozumiem, z wyjątkiem tego, że zastanawiam się nad jedną rzeczą.

AppController, którego używają, implementuje interfejs ValueChangeHandler, a metoda onValueChange jest wyzwalana po zmianie historii.

Mój problem dotyczy tej zmiennej onValueChange w AppController (uwzględniłem ją poniżej dla każdego, kto nie widział przykładowego projektu). Wykonuje porównanie ciągów na tokenie historii wysłanym i tworzenie instancji odpowiedniego prezentera do obsługi akcji. To wszystko jest w porządku i wygląda na przykładową aplikację z 3 działaniami, ale jak można ją skalować do prawdziwej aplikacji z wieloma innymi akcjami?

Trzymanie się tego wzoru doprowadziłoby do dość dużego / brzydkiego else if, ale wciąż jestem zbyt nowy, aby GWT (i java) mógł wywnioskować lepszy wzorzec dla większych aplikacji.

Każda pomoc jest bardzo cenna!

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
2018-04-01 14:30


pochodzenie




Odpowiedzi:


Podnosisz ważny punkt za pomocą aplikacji GWT na dużą skalę. Niedawno pracowałem nad aplikacją portalu GWT o wartości 50 000+, a my jesteśmy pochowani w wydarzeniach i złożonych schematach przełączania / obsługi. Dostępny jest dobry post na blogu tutaj który opisuje, jak straszne może się to stać, a także wskazuje na rozwiązanie (zob straszny przypis).

Jednak nowa funkcjonalność GWT2 UIBinder i MVP upraszcza wszystko. W rzeczywistości autor wspomnianego wyżej postu na blogu napisał o miejsca framework (który jest częścią GWT 2.1) tutaj.


6
2018-04-02 11:52





Jedynym zdarzeniem, jakie powinna otrzymać metoda onValueChange, jest zmiana "zmieniająca widok". Biorąc pod uwagę, że każdy warunek ma 1 linię, nigdy nie będzie tak duży. W końcu będziesz dobrze używać tego wzoru.

Jak powiedział Lars, połączenie UiBinder ze wzorcem MVP jest łatwe i znacznie zmniejszy liczbę linii kodu i ułatwi modyfikację kodu.


0
2018-05-20 13:31