1 / 26

GWT Model – View – Presenter & Command pattern

GWT Model – View – Presenter & Command pattern. Michał Sędzielewski. O mnie słów kilka. Zainteresowania:. Software Developer. Agenda. Java i co dalej? GWT + MVP gwt – presenter gwt – dispatch Przykład Narzędzia Zasoby. Java i co dalej?. MVC - MVP.

marie
Download Presentation

GWT Model – View – Presenter & Command pattern

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. GWT Model – View – Presenter& Command pattern Michał Sędzielewski

  2. O mnie słów kilka Zainteresowania: Software Developer

  3. Agenda Java i co dalej? GWT + MVP gwt – presenter gwt – dispatch Przykład Narzędzia Zasoby

  4. Java i co dalej?

  5. MVC - MVP

  6. Model – View - PresenterPresenter

  7. Model – View - PresenterPresenter - decoupling Zwracamy interfejsy, nie widgety – testowalność, view decoupling publicinterface Display{ Button getLoginButton(); HasClickHandler getLoginButton(); CheckBox getRememberMeCheckBox(); HasValue<boolean> getRmbrMeChBx(); }

  8. Model – View - PresenterPresenter – komunikacja – DOM events Presenter odpowiada za „logikę” aplikacji display.getLoginButton().addClickHandler(new LoginClickHandler()); class LoginClickHandler implements ClickHandler { @Override public void onClick(ClickEvent event){ ... }; }

  9. Model – View - PresenterPresenter - komunikacja EventBus

  10. Model – View - PresenterPresenter - komunikacja • Definiujemy własne zdarzenia (extends GwtEvent) • Presentery nasłuchują na dane zdarzenie • Presentery wywołują zdarzenia eventBus.addHandler(LoginEvent.TYPE, new LoginEventHandlerImpl())); eventBus.fireEvent(new LoginEvent(true));

  11. Presenter - Przykład

  12. Model – View - PresenterView

  13. View - implementacja publicclass LoginView extends Composite implements LoginPresenter.Display { ... }

  14. View - przykład

  15. Command pattern- idea GWT-RPC (3 klasy) • LoginService • LoginServiceAsync • LoginServiceImpl Problemy: • Caching • Dodatkowe parametry

  16. Command pattern - client dispatcher.execute(new LoginAction(username), new AsyncCallback<LoginActionResult>() { @Override publicvoid onFailure(Throwable e) {} @Override publicvoid onSuccess(LoginActionResult result) {} }

  17. Command pattern - server @Component public class LoginActionHandler implements ActionHandler<LoginAction, LoginActionResult> { @Override public LoginActionResult execute(LoginAction action) throws ActionException { // validation returnnew LoginActionResult(true); } @Override public Class<LoginAction> getActionType() { return LoginAction.class; } }

  18. Command pattern - zalety

  19. Google GIN • Dependency Injection dla GWT • „Język angielski” • Pozwala na łatwą konfigurację globalnych usług (EventBus, Dispatcher)

  20. Google GIN - MVP bind(EventBus.class).to(DefaultEventBus.class).in(Singleton.class); bindPresenter(AppPresenter.class, AppPresenter.AppDisplay.class, AppView.class); @Inject public LoginPresenter(LoginDisplay display, EventBus eventBus, DispatchAsync dispatcher) { ... }

  21. GIN – MVP - Przykład

  22. Lazy loading • Lazy loading • GWT Async   GWT.runAsync(new RunAsyncCallback() {    public void onSuccess() {  // load lazy     } ...   });

  23. Zalety ww architektury • Rozszerzalność • Zarządzalność

  24. Linki • http://code.google.com/webtoolkit/articles/mvp-architecture-2.html • http://code.google.com/p/gwt-dispatch/ • http://code.google.com/p/gwt-presenter/ • http://code.google.com/p/gwt-platform/ • http://code.google.com/p/mvp4g/ • http://james.apache.org/hupa/index.html

  25. Dziękuję za uwagę ?

  26. Future Processing Academic Days http://www.future-processing.com/fpad 27 maja 2010, godzina 14:00 Aula D, Wydział AEI, Politechnika Śląska

More Related