Перейти до вмісту

Model-View-ViewModel

Матеріал з Вікіпедії — вільної енциклопедії.

Model-View-ViewModel — це шаблон, що застосовується під час проектування архітектури додатків. Публічно вперше був представлений Джоном Госсманом (John Gossman) у 2005 році як модифікація шаблону Presentation Model. MVVM орієнтований на такі сучасні платформи розробки, як Windows Presentation Foundation та Silverlight від компанії Microsoft.

Призначення

MVVM використовується для відокремлення моделі та її представлення. Необхідністю цього є надання можливості змінювати їх незалежно один від одного. Наприклад, розробник працює над логікою роботи з даними, а дизайнер відповідно із користувацьким інтерфейсом.

Використання[1]

MVVM зручно використовувати замість класичного MVC та йому подібних у тих випадках, коли на платформі, де ведеться розробка, присутнє "зв'язування даних".

В MVC/MVP зміни у користувацькому інтерфейсі не впливають безпосередньо на модель, а йдуть через Контроллер/Presenter. У таких технологіях як WPF та Silverlight присутня концепція "зв'язування даних", що дозволяє зв'язувати дані із візуальними елементами в обидві сторони. Відповідно при використанні цього прийому застосування шаблону MVC стає дуже незручним через те, що прив'язка даних до представлення напряму не вкладається у концепцію MVC/MVP.

Опис

Шаблон MVVM ділиться на три частини:

  • Модель (Model), як і в класичному шаблоні MVC, Модель представляє собою фундаментальні дані, що необхідні для роботи додатку.
  • Вигляд/Представлення (View) як і в класичному шаблоні MVC, Вигляд — це графічний інтерфейс, тобто вікно, кнопки тощо.
  • Модель вигляду (ViewModel, що означає «Model of View»[1]) з одного боку є абстракцією Вигляду, а з іншого надає обгортку даних з Моделі, які мають зв'язуватись. Тобто вона містить Модель, яка перетворена до Вигляду, а також містить у собі команди, якими може скористатися Вигляд для впливу на Модель. Фактично ViewModel призначена для того, щоб
  • - Здійснювати зв'язок між моделлю та вікном
  • - Відслідковувати зміни в даних, що зроблені користувачем
  • - Відпрацьовувати логіку роботи View (механізм команд)

Посилання

  1. а б Introduction to Model/View/ViewModel pattern for building WPF apps