Gwt IV -mvp

Post on 23-Jun-2015

2.859 views 2 download

description

GWT Parte-4. Modelo Vista PresentadorSeminarios JavaHispano.Universidad S.Pablo CEU MadridAbril 2010

Transcript of Gwt IV -mvp

GWT, Google Web ToolkitParte 4: Modelo Vista Presentador

Manuel Carrasco MoñinoSeminarios de JavaHispano (16-Abril-2010)manolo@apache.org

Aplicaciones Complejas RIA, modelo MVP

MVC (Modelo vista controlador)

• Struts, JFace, Spring mvc, ASP, Grails, ROR, etc• Vista no testeable (o dificil)• Desarrollo lento• Vinculos complejos

• Muy acoplado• Dependencias cruzadas

MVP (Modelo Vista Presentador)

• Swing, awt, swt, echo2, vaadin, gwt ...• Vista Testeable unitariamente.• TDD pero desarrollo lento.• Vinculos muy sencillos: 1 → 1

• Objetivo: Crear una vista simple– Testabilidad de la vista no es necesaria

porque utilizamos componentes testados.

– Se pueden crear Mock muy simples• Desarrollo Rapido con TDD

MVP + EventBus + Patron Comando

• Muy desacoplado• Dependencias muy simples

Resumiendo: ¿Qué es MVP?

• MVP patrón derivado de MVC que ayuda a separar mucho la vista• La clave es una estricta regulación de la interacción entre la vista y el

presentador• La vista y el modelo de datos estan separados a través de un contrato

(interface)• MVP es una mejora de MVC basado en:

– La vista no conoce al modelo.– El presentador es independiente de la tecnología de interfaz de

usuario.– La vista y el presentador son testeables independientemente

MVP + Gwt, la clave: el presentador

• Componente encargado de “presentar” las acciones del usuario al sistema y obtener la respuesta.

• Actúa de la siguiente manera:– Recibe datos de la vista– Convierte los datos de la vista en acciones que se ejecutan contra el sistema– Con la respuesta del sistema, actualiza los datos de la vista.– La navegación a otra vista, deberán ser delegadas en el presentador, que

sabrá de historia, caches, etc. • Se ejecuta en el navegador, pero es testeable en la JVM.• Es la clave del desarrollo ágil en Gwt• Librerías disponibles:

– Gwt-Gin → inyeccion en parte cliente– Gwt-presenter → para el presentador, historia, eventbus– Gwt-dispatch → para el modelo comando (cliente/servidor

presentador/modelo)

MVP, Consideraciones

• El patrón MVP, no puede ser implementado sin haber hecho un análisis previo que determine que miembros deben formar parte del contrato de cada vista.

• Una vez que tenemos claro el contrato que debe implementar cada vista, podemos desarrollar la lógica de presentación de forma paralela al diseño gráfico.

• El patrón MVP puede ser caro de implementar en aplicaciones relativamente sencillas, pero es muy útil en grandes aplicaciones.

MVP explicación de clases y métodos:

• EventBus: – addEvent(type, action), – fireEvent(type, data)

• Dispatcher: – execute(action(request), callback(response))

• XXPresenter, XXDisplay– onBind, revealDisplay

• XXEventHandler, XXEvent• XXAction, XXResult• XXActionHandler

Manuel Carrasco Mo inoñ

http://manolocarrasco.blogspot.comtwitter.com/dodotis

manolo@apache.org

Preguntas