Domanda

Sto facendo i miei primi passi con GWT. Ho una domanda dopo aver letto:

Nel primo esempio il Presenter definisce l'interfaccia per il View.

public class ContactsPresenter implements Presenter {
  ...
  public interface Display extends HasValue<List<String>> {
    HasClickHandlers getAddButton();
    HasClickHandlers getDeleteButton();
    HasClickHandlers getList();
    void setData(List<String> data);
    int getClickedRow(ClickEvent event);
    List<Integer> getSelectedRows();
    Widget asWidget();
  }
}
.

E nel secondo, il View definisce l'interfaccia per il Presenter.

public interface ContactsView<T> {

  public interface Presenter<T> {
    void onAddButtonClicked();
    void onDeleteButtonClicked();
    void onItemClicked(T clickedItem);
    void onItemSelected(T selectedItem);
  }

  void setPresenter(Presenter<T> presenter);
  void setColumnDefinitions(List<ColumnDefinition<T>> columnDefinitions);
  void setRowData(List<T> rowData);
  Widget asWidget();
}
.

Qual è l'idea di questa differenza?

Quale dovrei scegliere?

È stato utile?

Soluzione

Penso che dovresti aver usato la parola "definisce" nella tua domanda invece di "attrezzi" e se questo è il caso non importa quale classe definisce l'interfaccia.

È possibile fare qualcosa di diverso definendo le interfacce nei propri file.Alla fine del giorno tutto ciò che conta è il presentatore che implementa l'interfaccia Presenter e la vista implementazione dell'interfaccia di visualizzazione.

Altri suggerimenti

@deepak Queste sono preoccupazioni valide. La parola è infettare l'implementazione non la definizione.

Lasciami spiegare. In primo esempio i presentatori detengono il contratto a quale vista deve implementare in altre parole guida ciò che dovrebbe essere implementato da visualizzazioni un approccio MVP classico.

Le cose si confondono in secondo esempio. Dove il presentatore non ha alcun controllo su quale vista deve implementare. Questo non è MVP e Google lo sta chiamando come MVP. Non c'è modo in cui puoi testare le viste con i test jre / unità usando questo approccio. Ciò non lo rende male, non solo MVP e Google non dovrebbe chiamare questo MVP o devono spiegare sul perché è un MVP?

@Saket Bansal Separare l'interfaccia non è un approccio corretto. Si tradurrà in modo difficile mantenere il codice come la crescita dell'applicazione.

Secondo me puoi prendere entrambi i approcci, ricordo che Google dicesse alcuni dove prima ha funzionato per loro per AdWords e secondo per Wave.

Qualche come dovresti anche guardare framworks come GWTP o Errai da jboss

Nel secondo tutorial il codice è stato modificato per utilizzare un'interfaccia presentatrice (definita nella vista) per adattarsi a utilizzare UBIBINDERS e Generics Java.Penso che l'interfaccia del presentatore sia stata spostata nell'interfaccia di visualizzazione in quanto entrambi condividono lo stesso generico T.

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