3. 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
4. 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
5. MVP + EventBus + Patron Comando
• Muy desacoplado
• Dependencias muy simples
6. 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
7. 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)
8. 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.