Estoy aprendiendo GWT, así que todavía estoy tratando de resolver todas sus peculiaridades y características. Estoy leyendo el ejemplo que dan ilustrando el patrón de MVP, y casi lo entiendo, excepto que me pregunto una cosa.Escalando los "contactos" de gwt (proyecto de ejemplo) AppController con MVP
El AppController que utilizan implementa la interfaz ValueChangeHandler y el método onValueChange se activa cuando cambia el historial.
Mi problema es con este onValueChange en el AppController (lo he incluido a continuación para cualquier persona que no haya visto el proyecto de muestra). Está haciendo una comparación de cadenas en el token de historial enviado e instanciando el presentador apropiado para manejar la acción. Todo está muy bien para la aplicación de muestra con 3 acciones, pero ¿cómo se puede escalar esto a una aplicación real con muchas más acciones?
Cumplir con este patrón daría lugar a un gran/feo else if
, pero todavía soy demasiado nuevo para GWT (y java) para inferir un mejor patrón para aplicaciones más grandes.
¡Cualquier ayuda es muy apreciada!
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);
}
}
}
}