Modelo–vista–modelo de vista
# Modelo–vista–modelo de vista

El patrón modelo–vista–modelo de vista (en inglés: model–view–viewmodel, abreviado MVVM) es un patrón de arquitectura de software. Se caracteriza por tratar de desacoplar lo máximo posible la interfaz de usuario de la lógica de la aplicación.

## Historia

En el año 2004, un grupo de desarrollo de Microsoft trabajaba en un proyecto denominado “Avalon”, más conocido por su nombre definitivo WPF (Windows Presentation Foundation). El propósito de dicho proyecto era permitir el desarrollo de aplicaciones de escritorio más completas y con un aspecto visual mucho más logrado y complejo de lo que era posible con Windows Forms.

John Gossman en 2005, en un artículo de la MSDN, mostraba al público el patrón MVVM. En dicho artículo, MVVM se presenta como una variación del patrón MVC ajustado a WPF y a su sistema de enlace a datos, aunque los expertos del desarrollo coinciden en que es una adaptación del patrón «presentation model» creado por Martin Fowler.

## Elementos

### El modelo

Representa la capa de datos y/o la lógica de negocio, también denominado como el objeto del dominio. El modelo contiene la información, pero nunca las acciones o servicios que la manipulan. En ningún caso tiene dependencia alguna con la vista.

### La vista

La misión de la vista es representar la información a través de los elementos visuales que la componen. Las vistas en MVVM son activas, contienen comportamientos, eventos y enlaces a datos que, en cierta manera, necesitan tener conocimiento del modelo subyacente.

### Modelo de vista

El modelo de vista es un actor intermediario entre el modelo y la vista, contiene toda la lógica de presentación y se comporta como una abstracción de la interfaz. La comunicación entre la vista y el modelo de vista se realiza por medio los enlaces de datos.

