Model-View-ViewModel

Model—View—View-Model («M.–V.–V.M.») — шаблон проектирования архитектуры приложения. Представлен — в «2005» году (Джоном Госсманом: John Gossman): как модификация шаблона «Presentation Model». Ориентирован — на современные платформы разработки, — такие как:
- от компании «MicroSoft»: [1]
- «ZK» (frame-work).
Назначение
Используется — для разделения модели и её представления, — чтобы упростить их изменение (отдельно, друг от друга)…
Пример:
- «Разработчик» — задаёт логику (работы — с данными);
- «Дизайнер» — задаёт пользовательский интер-фейс.
Использование
«M.–V.–V.M.» — удобно использовать вместо классического «M.–V.–C.» (и ему подобных) — в тех случаях, когда на плат-форме (для которой — ведётся разработка) есть «связывание данных».
В шаблонах проектирования «M.–V.–C.» и «M.–V.–P.», — изменения (в пользовательском интер-фейсе) — не влияют (не-посредственно) на «Mодель»… Предварительно, они — идут через «Контроллер» (англ. Controller) или «Presenter»…
В таких технологиях, как «W.P.F.» и «Silver light» — есть концепция: «связывание данных», — позволяющая связывать данные — с визуальными элементами; в «обе» стороны… Следовательно; при использовании этого приёма, — применение модели «M.–V.–C.» — становится крайне не-удобным (из-за того, что «привязка» данных [к представлению, на-прямую] — не укладывается, в концепцию «M.–V.–C.» и «M.–V.–P.»).
Описание
Шаблон «M.–V.–V.M.» — делится на три части:
- «Модель» (англ. Model) (так же, как в классической «M.–V.–C.») — представляет собой:
- логику (для работы с «данными»);
- описание — «фундаментальных» данных (не-обходимых, для работы приложения);
- «Представление» (англ. View) — графический интер-фейс: окна, списки, кнопки (и — тому подобное)… Получает (для подписки, от «модели представления») — уведомления (о событиях: изменении значений свойств) и команды; а именно:
- В случае, если (в «модели представления») изменилось какое-либо свойство:
- Она — оповещает (всех подписчиков) об этом;
- «Представление» (в свою очередь) — может попросить (у «модели представления») обновлённое значение.
- В случае, если пользователь воздействует на какой-либо элемент (интер-фейс), — представление — выполняет со-ответствующую команду (заданную — «моделью представления»).
- В случае, если (в «модели представления») изменилось какое-либо свойство:
- «Модель представления» (англ. ViewModel):
- с одной стороны — абстракция «представления»;
- с другой стороны — обёртка данных (из «модели»), подлежащих «связыванию». То есть, она — содержит:
- «Модель» (преобразованную — в «представление»);
- Команды (которыми — может пользоваться «представление», — чтобы влиять на «модель»).
См. также
Ссылки
![]() | Для улучшения этой статьи желательно: |