Evolución MVC

Post on 14-Jan-2017

449 views 0 download

Transcript of Evolución MVC

Norberto Ortigoza

¡Eso ya lo se!

El desarrollador promedio no lo conoce

¡A pesar de que existe desde hace mas de 30 años!

Otros hablan mucho de MVC“¡Es importante usarlo!”“Mi herramienta lo usa”

“¡Hay que usar patrones!”

Pocos conocen la arquitectura original…

Otros la conocieron pero ya se les olvido…

Otros están intrigados

Los desarrolladores escriben formas especificas de la aplicación que usan controles genéricos.

Las formas describen el layout de los controles.

Ediciones simples de datos son manejadas a través de data binding.

La forma observa los controles y tiene

métodos que reaccionan a eventos disparados por los controles (maneja cambios complejos).

Hace una clara separación entre presentación (view & controller) y el dominio (model) - Separated Presentation.

Divide los widgets del GUI en un controlador (para reaccionar a los estímulos del usuario) y una vista (para desplegar el estado del modelo).

El Controller y la View solo se deberían de comunicar a través del modelo.

Las vistas y los controladores observan el modelo para permitir que múltiples widgets se actualicen sin necesidad de comunicarse directamente - Observer Synchronization.

En MVC es fundamental el concepto de Modelo del Dominio.

Hay lógica que no pertenece al Dominio (lógica y estado de la vista).

Controller

ViewPresentation Model

DODO

DO

Modelo de la Aplicación Interface con el Usuario

Modelo

Dominio

Unificación de Formas y Controles con MVC.

Interacciones del usuario son manejados por el Presenter.

Los widgets son actualizados por medio del Observer.

Presenter

View

Model

DODO

DO

Dominio Interface con el Usuario

El Presenter manipula los widgets directamente solo en los casos mas complejos. -Supervising Controller

El Presenter controla completamente los widgets. -Passive View

Cuando el Presenter controla por completo a los widgets se puede probar gran parte del sistema sin recurrir al GUI.

Se requiere contar con un Test Double para simular el GUI.

¡Ya termine!