Model-View-ViewModel

Материал из Википедии — свободной энциклопедии
Это старая версия этой страницы, сохранённая Nikolice (обсуждение | вклад) в 16:11, 10 сентября 2018. Она может серьёзно отличаться от текущей версии.
Перейти к навигации Перейти к поиску

Model—View—View-Model («M.–V.–V.M.») — шаблон проектирования архитектуры приложения. Представлен — в «2005» году (Джоном Госсманом: John Gossman): как модификация шаблона «Presentation Model». Ориентирован — на современные платформы разработки, — такие как:

Назначение

Используется — для разделения модели и её представления, — чтобы упростить их изменение (отдельно, друг от друга)…

Пример:

  • «Разработчик» — задаёт логику (работы — с данными);
  • «Дизайнер» — задаёт пользовательский интер-фейс.

Использование

«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.» — делится на три части:

  1. «Модель» (англ. Model) (так же, как в классической «M.–V.–C.») — представляет собой:
    • логику (для работы с «данными»);
    • описание — «фундаментальных» данных (не-обходимых, для работы приложения);
  2. «Представление» (англ. View) — графический интер-фейс: окна, списки, кнопки (и — тому подобное)… Получает (для подписки, от «модели представления») — уведомлениясобытиях: изменении значений свойств) и команды; а именно:
    • В случае, если (в «модели представления») изменилось какое-либо свойство:
      • Она — оповещает (всех подписчиков) об этом;
      • «Представление» (в свою очередь) — может попросить (у «модели представления») обновлённое значение.
    • В случае, если пользователь воздействует на какой-либо элемент (интер-фейс), — представление — выполняет со-ответствующую команду (заданную — «моделью представления»).
  3. «Модель представления» (англ. ViewModel):
    • с одной стороны — абстракция «представления»;
    • с другой стороны — обёртка данных (из «модели»), подлежащих «связыванию». То есть, она — содержит:
      • «Модель» (преобразованную — в «представление»);
      • Команды (которыми — может пользоваться «представление», — чтобы влиять на «модель»).

См. также

Ссылки