¿Por qué debería interesarme el MVVM?
¿Qué razón hay, como desarrolladores, para siquiera poner atención al Modelo-Vista-Modelo de Vista? El patrón aporta varios beneficios tanto a WPF como a Silverlight. Antes de continuar, vale preguntarse:
- ¿Necesito compartir mi proyecto con un diseñador y tener la flexibilidad de que ambos aspectos de diseño y desarrollo se lleven a cabo casi simultáneamente?
- ¿Requiero pruebas unitarias comprensivas para mis soluciones?
- ¿Es importante para mí el tener componentes reutilizables tanto dentro de un proyecto como a través de mi organización?
- ¿Desearía yo tener mayor flexibilidad para poder cambiar la interfase al usuario en una aplicación sin tener que reorganizar su lógica?
MVVM a grandes rasgos
Examinemos las partes principales de MVVM, empezando con un fundamento esencial para toda aplicación: los datos. Estos son contenidos en el modelo.
El Modelo
El modelo representa los datos o información con la que trabajamos y por eso me gusta llamarlo el objeto del dominio. Un ejemplo de modelo puede ser un contacto (con su nombre, número de teléfono, dirección y demás) o la descripción de un punto de publicación para un medio audiovisual transmitido en vivo.
La clave para recordar el modelo es que contiene la información, pero no las acciones o servicios que la manipulan. No es responsable de darle forma para que se vea bien en la pantalla, o de obtener una lista de elementos de un servidor remoto (de hecho, en tal lista cada elemento sería a su vez un modelo). La lógica de la aplicación o “reglas empresariales” son generalmente mantenidas en clases separadas del modelo y actúan en él. Aunque no siempre es cierto, a veces el modelo puede validar la información.
No es fácil mantener el modelo nítido, especialmente al representar entidades del mundo real. Por ejemplo, el registro de un contacto puede que incluya la fecha en que fue modificado por última vez junto con la identidad de quien hizo la modificación (para efectos de auditoría), demás de identificador único (usado en la base de datos o similar). La fecha de modificación no tiene ninguna conexión con el contacto en la vida real, pero es un efecto secundario asociado con la forma en la utilizamos, le damos seguimiento, y la almacenamos en el sistema.
La Vista
La vista es la parte con la que estamos más familiarizados y la que ve el usuario. Su papel es representar la información, tomándose a veces ciertas libertades con el fin de hacerla más clara o presentable. Por ejemplo, una fecha podría ser representada en el modelo como el número de segundos contados desde la medianoche del primero de enero de 1970 (Tiempo Unix). Sin embargo, el número es presentado al usuario en forma de día, mes y año en su zona horaria local. Una vista puede también contener ciertos comportamientos, como el aceptar la entrada de datos. La vista se encarga de esta faceta (teclas presionadas, movimientos del ratón, gestos en una pantalla táctil, y así por el estilo) que eventualmente ejerce influencia en las propiedades del modelo.
En MVVM la vista es activa. A diferencia de una vista pasiva sin conocimiento del modelo, y bajo el manejo total de un controlador o presentador, la vista en MVVM contiene comportamientos, eventos y enlaces a datos que, hasta cierto punto, necesitan saber sobre el modelo subyacente y el modelo de vista. Aunque tales eventos y comportamientos son asociados a propiedades, métodos y comandos, la vista es aún responsable de manejar sus propios eventos y no pasa esta tarea al modelo de vista.
Algo digno de recordar sobre la vista es que no es responsable de llevar cuenta de su estado. El modelo de vista se encarga de ello y mantiene la vista al tanto de los cambios.
El modelo de vista (Nuestro controlador o presentador)
El modelo de vista introduce el concepto de Separación de la Presentación, es decir, mantiene al modelo separado y protegido de los minuciosos detalles de la vista. Por eso es que el modelo de vista es la pieza clave del trío. Esta separación permite que el modelo se limite a contener los datos, en vez de verse obligado a saber la forma en que se presenta una fecha al usuario y tener que hacer la conversión de formato. De igual manera, la vista sólo tiene que presentar la fecha. El controlador trabaja como intermediario entre ambos, recibiendo información de la vista e insertándola en el modelo, o actuando con un servidor para obtener datos del modelo y luego convertirlos en propiedades que pueden ser usadas en la vista.
El modelo de vista también hace disponibles métodos, comandos y otros puntos de acceso que ayudan a mantener el estado de la vista, manipular el modelo en respuesta a acciones de la vista y disparar eventos en la misma.
link MVVM EXPLICADO