Introducción

En el 2004 Martin Fowler  introdujo el patrón Presentation Model (PM)

Algunos meses más tarde MVVM fue desarrollado en Microsoft por los arquitectos Ken Cooper y Ted Peters específicamente para simplificar la programación orientada a eventos de las interfaces de usuario explotando las características de Windows Presentation Foundation (WPF).

En el 2005 John Gossman en Microsoft, uno de los arquitectos de Windows Presentation Foundation (WPF) y Silverlight anuncio en su blog personal la entrada del patrón de diseño Model View ViewModel (MVVM).

MVVM es un patrón de diseño orientado a plataformas XAML:

  • Windows Presentation Foundation (WPF)
  • Silverlight
  • Windows Phone
  • Windows 8
  • Windows 10
  • Universal Windows Platform (UWP)
  • Xamarin

Estructura

Básicamente, MVVM consta de tres componentes principales: Model, View, y ViewModel.

Model: proporciona la encapsulación de los datos de la aplicación y la lógica de negocios relacionados, permitiendo máxima integridad y consistencia de los datos. Básicamente implementa el modelo de datos de la aplicación y se integra con las fuentes de datos e implementa la lógica de negocio necesaria para la recuperación de datos y validación para proporcionar integridad y consistencia de los datos. Model no contienen ninguna interfaz de usuario, ni lógica ni funcionalidad. La aplicación puede contener una o más clases de modelo según los requisitos de aplicación y diseño.

ViewModel encapsula la lógica de presentación y los datos de la vista. Gestiona las interacciones entre las Vistas con las clases del modelo para soportar Data Bindings (enlace de datos) y los eventos de notificación de cambio mediante la aplicación de propiedades necesarias y comandos en el ViewModel. ViewModel no contiene ninguna interfaz de usuario. La aplicación puede contener una o más clases de modelo según los requisitos de aplicación y diseño.

View define la interfaz de usuario de las aplicaciones. Representa la estructura, diseño, comportamientos visuales (behaviors) y estilos (templates) de la interfaz de usuario.

Ventajas

View

  • Separación de capas (cada elemento está aislado), la comunicación se realiza mediante el indexado de datos o acceso a información
  • Roles individuales (La vista está aislada del ViewModel y del Model, es decir no se vinculan y no existe dependencia de uno con el otro)
  • Separación de roles entre diseñador y desarrollador: Es decir hay una separación entre la Vista y su lógica.

ViewModel

  • Reutilización de código: Es decir es muy posible que las vistas tengan que reutilizar la lógica del ViewModel
  • Escalar y mantener tu código pudiendo crear bibliotecas de clases para implementar en otros proyectos.
  • Pruebas unitarias sobre módulos: es decir yo podría establecer pruebas específicas para una Vista, para un ViewModel o para un Modelo de manera coherente con su funcionalidad sin tener que afectar a toda la aplicación.

Model

  • Acceso desde cualquier punto de la aplicación: Contiene toda la información a partir de cualquier fuente de datos

MVVM no es una regla si no una metodología, es muy flexible de utilizar lo cual quiere decir que cada quien podrá adaptar este patrón de diseño de acuerdo a sus necesidades es por eso que existen varios frameworks o incluso puedes crear el tuyo propio.

 

Autor: Eduardo Flores Miranda
Curso: Microsoft MCSD Web Applications + SharePoint Apps
Centro: Tajamar Año académico: 2015-2016

 

 

Leave a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.