Модель – вид – модель просмотра - Model–view–viewmodel

MVVMPattern.png

Модель – вид – модель просмотра (MVVM) это программное обеспечение архитектурный образец что облегчает разделение развития графический интерфейс пользователяПосмотреть) - будь то через язык разметки или код GUI - от разработки бизнес-логика или же бэкэнд логика ( модель), так что представление не зависит от какой-либо конкретной платформы модели. В просмотреть модель MVVM - это преобразователь значений,[1] означает, что модель представления отвечает за отображение (преобразование) объекты данных из модели таким образом, чтобы объекты легко управлялись и представлялись. В этом отношении модель представления больше модель, чем представление, и обрабатывает большую часть, если не всю логику отображения представления.[1] Модель представления может реализовывать образец посредника, организуя доступ к внутренней логике вокруг набора сценарии использования поддерживается мнение.

MVVM - это вариант Мартин Фаулер Шаблон проектирования "Презентационная модель".[2][3] Это было изобретено Microsoft архитекторы Кен Купер и Тед Петерс специально для упрощения событийно-ориентированное программирование пользовательских интерфейсов. Шаблон был включен в Windows Presentation Foundation (WPF) (Microsoft .СЕТЬ графическая система) и Silverlight (Производное Интернет-приложение WPF).[3] Джон Госсман, один из архитекторов Microsoft WPF и Silverlight, объявил MVVM в своем блоге в 2005 году.[3]

Модель – представление – модель просмотра также называется модель – вид – подшивка, особенно в реализациях, не связанных с платформой .NET. ZKкаркас веб-приложений написано в Ява ) и KnockoutJSJavaScript библиотека ) используйте модель – вид – подшивку.[3][4][5]

Компоненты паттерна MVVM

Модель
Модель относится либо к модель предметной области, который представляет содержание реального состояния (объектно-ориентированный подход), или уровень доступа к данным, который представляет контент (подход, ориентированный на данные).[нужна цитата ]
Вид
Как в модель-представление-контроллер (MVC) и модель-просмотр-презентатор (MVP), Посмотреть это структура, макет и внешний вид того, что пользователь видит на экране.[6] Он отображает представление модели и получает взаимодействие пользователя с представлением (щелчки мыши, ввод с клавиатуры, жесты касания экрана и т. Д.), А также передает их обработку модели представления через привязка данных (свойства, обратные вызовы событий и т. д.), который определен для связывания представления и модели представления.
Посмотреть модель
В просмотреть модель представляет собой абстракцию представления, отображающего общедоступные свойства и команды. Вместо контроллера шаблона MVC или презентатора шаблона MVP в MVVM есть связующее, который автоматизирует обмен данными между представлением и его связанными свойствами в модели представления. Модель представления описывается как состояние данных в модели.[7]
Основное различие между моделью представления и презентатором в шаблоне MVP состоит в том, что у презентатора есть ссылка на представление, а у модели представления - нет. Вместо этого представление напрямую привязывается к свойствам модели представления для отправки и получения обновлений. Для эффективного функционирования требуется связующая технология или создание шаблонный код сделать привязку.[6]
Связующее
Декларативные данные и привязка команд неявны в шаблоне MVVM. В Microsoft стек решений связующее - это язык разметки называется XAML.[8] Связующее освобождает разработчика от необходимости писать шаблонную логику для синхронизации модели представления и представления. При реализации вне стека Microsoft наличие технологии декларативного связывания данных делает возможным этот шаблон.[4][9] а без связующего обычно вместо этого используется MVP или MVC и приходится писать больше шаблона (или сгенерировать его с помощью другого инструмента).

Обоснование

MVVM был разработан для использования привязка данных функции в WPF (Windows Presentation Foundation), чтобы лучше отделить разработку уровня представления от остальной части шаблона, удалив практически все GUI код ("код программной части ") из слоя просмотра.[3] Вместо того, чтобы требовать Пользовательский опыт (UX) разработчиков для написания кода графического интерфейса, они могут использовать язык разметки фреймворка (например, XAML ) и создавать привязки данных к модели представления, которая написана и поддерживается разработчиками приложений. Разделение ролей позволяет интерактивным дизайнерам сосредоточиться на потребностях UX, а не на программировании бизнес-логики. Таким образом, уровни приложения можно разрабатывать в нескольких рабочих потоках для повышения производительности. Даже когда один разработчик работает со всей базой кода, правильное разделение представления от модели более продуктивно, поскольку пользовательский интерфейс обычно меняется часто и в конце цикла разработки на основе отзывов конечных пользователей.[нужна цитата ]

Шаблон MVVM пытается получить оба преимущества разделения функциональной разработки, обеспечиваемые MVC, при этом используя преимущества привязки данных и фреймворк, привязывая данные как можно ближе к чистой модели приложения.[3][10][11][требуется разъяснение ] Для проверки входящих данных он использует связыватель, модель представления и функции проверки данных любых бизнес-уровней. В результате модель и структура управляют как можно большим количеством операций, устраняя или минимизируя логику приложения, которая напрямую управляет представлением (например, код программной части).

Критика

Джон Госсман раскритиковал шаблон MVVM и его применение в конкретных случаях, заявив, что MVVM может быть «излишним» при создании простых пользовательских интерфейсов. Он считает, что для более крупных приложений предварительное обобщение модели представления может быть затруднительным и что привязка крупномасштабных данных может привести к снижению производительности.[12]

Реализации

Платформы .NET

Фреймворки JavaScript

Смотрите также

Рекомендации

  1. ^ а б Группы Google. «Мысль: MVVM устраняет 99% необходимости в ValueConverters».
  2. ^ Мартин Фаулер (19 июля 2004 г.). «Шаблон проектирования модели презентации». Мартин Фаулер. Com.
  3. ^ а б c d е ж Смит, Джош (февраль 2009 г.). «Приложения WPF с шаблоном проектирования модель-представление-представление модели». Журнал MSDN.
  4. ^ а б Мэсси, Саймон. «Паттерны презентации в ZK». Получено 24 марта 2012.
  5. ^ Стив Сандерсон. "KnockoutJS".
  6. ^ а б "Шаблон MVVM". msdn.microsoft.com. Получено 29 августа 2016.
  7. ^ Пит Вайсброд. «Модель-представление-представление модели для WPF: еще один подход». Архивировано из оригинал 1 февраля 2008 г.
  8. ^ Вильдермут, Шон. «Привязка данных Windows Presentation Foundation: Часть 1». Microsoft. Получено 24 марта 2012.
  9. ^ «ЗК МВВМ». Potix. Получено 24 марта 2012.
  10. ^ Джон Госсман. «Истории из Smart Client: Введение в шаблон Модель / Представление / Модель представления для создания приложений WPF». Цитировать журнал требует | журнал = (помощь)
  11. ^ Карл Шиффлетт. «Изучение WPF M-V-VM». Архивировано из оригинал 13 апреля 2009 г.. Получено 5 июн 2009.
  12. ^ Джон Госсман. «Сказки от умного клиента: преимущества и недостатки M-V-VM». Цитировать журнал требует | журнал = (помощь)

внешняя ссылка