2010-04-01 6 views
12

Sto solo imparando GWT, quindi sto ancora cercando di risolvere tutte le sue stranezze e caratteristiche. Sto leggendo l'esempio che illustrano il pattern MVP, e praticamente lo prendo, tranne che mi sto chiedendo una cosa.Ridimensionamento dei "Contatti" di gwt (progetto di esempio) AppController con MVP

L'AppController che utilizzano implementa l'interfaccia ValueChangeHandler e il metodo onValueChange viene attivato quando la cronologia cambia.

Il mio problema è con questo onValueChange in AppController (l'ho incluso sotto per chi non ha visto il progetto di esempio). Sta eseguendo un confronto tra stringhe sul token della cronologia inviato e un'istanza del presentatore appropriato per gestire l'azione. Tutto questo è perfetto e dandy per l'app di esempio con 3 azioni, ma in che modo si ridimensiona l'aspetto di un'app reale con molte più azioni?

Attaccare a questo modello porterebbe a un bel po 'grande/brutto else if, ma sono ancora troppo nuovo per GWT (e java) per dedurre un modello migliore per le app più grandi.

Qualsiasi aiuto è molto apprezzato!

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); 
     } 
    } 
    } 
} 

risposta

6

Si alza un punto valido con l'applicazione GWT su larga scala. Recentemente ho lavorato su oltre 50.000 app di portale GWT e ci stiamo sotterrando in eventi e complessi schemi di switch/gestori. C'è un buon post sul blog disponibile here che descrive quanto può diventare terribile e suggerisce anche una soluzione (vedi nota terribile).

Tuttavia, la nuova funzionalità GWT2 UIBinder e MVP semplifica le cose. In effetti l'autore del post di blog sopra menzionato ha scritto sul framework places (che è una parte di GWT 2.1) here.

0

L'unico evento che il metodo onValueChange deve ricevere è quello "cambio di vista". Considerando ogni condizione è 1 linea, non sarà mai così grande. Alla fine starai bene usando quel modello.

Come detto Lars, combinare UiBinder con il pattern MVP è facile e ridurrà notevolmente il numero di code line e renderà il codice più facile da modificare.

Problemi correlati