Model-View-ViewModel
Паттерн Model-View-ViewModel - это паттерн, применяющийся при проектировании архитектуры приложения. Первоначально был представлен сообществу Джоном Госсманом (John Gossman) в 2005 году как модификация паттерна Presentation Model. MVVM ориентирован на современные платформы разработки, такие как Windows Presentation Foundation и Silverlight от компании Microsoft.
Назначение
MVVM используется для разделения модели и её представления, что необходимо, т.к. позволяет изменять их отдельно друг от друга. Например, программист задает логику работы с данными, а дизайнер соответственно работает с пользовательским интерфейсом.
Использование[1]
- MVVM удобно использовать вместо классического MVC и ему подобных в тех случаях, когда в платформе, на которой ведется разработка, присутствует "связывание данных".
В MVC/MVP изменения в пользовательском интерфейсе не влияют непосредственно на модель, а предварительно идут через Контроллер/Presentor. В таких технологиях как WPF и Silverlight есть концепция "связывания данных", позволяющая связывать данные с визуальными элементами в обе стороны. Следовательно при использовании этого приема применение паттерна MVC становится крайне неудобным из-за того, что привязка данных к представлению напрямую не укладывается в концепцию MVC/MVP.
Описание
Паттерн MVVV делится на три части:
- Модель (Model), так же, как в классическом паттерне MVC, Модель представляет собой фундаментальные данные, необходимые для работы приложения.
- Вид/Представление (View) так же, как в классическом паттерне MVC, Вид – это графический интерфейс, то есть окно, кнопки и.т.п.
- Модель вида (ViewModel, что означает "Model of View"[1]) является с одной стороны абстракцией Вида, а с другой предоставляет обертку данных из Модели, которые подлежат связыванию. То есть она содержит Модель, которая преобразована к Виду, а так же содержит в себе команды, которыми может пользоваться Вид, чтобы влиять на Модель.