gwt iv -mvp
DESCRIPTION
GWT Parte-4. Modelo Vista PresentadorSeminarios JavaHispano.Universidad S.Pablo CEU MadridAbril 2010TRANSCRIPT
GWT, Google Web ToolkitParte 4: Modelo Vista Presentador
Manuel Carrasco MoñinoSeminarios de JavaHispano (16-Abril-2010)[email protected]
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
Preguntas