31

Dentro de la programación, existen muchos patrones de diseño que nos ayudan a diseñar nuestras aplicaciones de una mejor manera utilizando las buenas prácticas que estos patrones recomiendan.

Uno de ellos es el patrón Modelo-Vista-Modelo de vista. En esta entrada de nuestro bloque te hablaré un poco sobre en qué consiste este patrón de diseño.

La idea principal es la de diseñar nuestra aplicación en capas, de forma que cada una de ellas sea independiente. En este caso el modelo, la vista y el modelo de vista.

Veamos entonces que es cada una de estas capas.

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), ademá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

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

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.

Bien, este es un patrón de diseño que nos ayuda a realizar aplicaciones mejor planeadas y más flexibles al momento de tener que realizar tareas de mantenimiento en el mismo. En nuestra siguiente sesión implementaremos un poco este patrón para codificar nuestra aplicación.

Bibliografía

Mora, D. (28 de 05 de 2010). Maromas Digitales. Obtenido de http://maromasdigitales.net/2010/05/patron-mvvm-explicado/