Mvc, mvp and mvvm: A comparison of architectural patterns
1. MVC, MVP and MVVM: A Comparison of Architectural
Patterns
Dyachenko Ivan, Ignite
2. Что такое Model/View/(C or VM or P)
● Шаблоны, которые описывают модульный подход к
разработке приложений
● Модули включают:
○ Model - данные
○ View - слой представления (Presentation Layer)
○ C or VM or P - чистая логика
● Они основаны на принципе "разделения
обязанностей"
3. Why Model-View-(C or VM or P)
Основные преимущества MVC шаблонов в
том, что они увеличивают:
● Модульность
● Гибкость
● Тестируемость
● Поддерживаемость
5. Model-View-Controller (MVC)
Концепция MVC была описана в 1979 году Трюгве Реенскауг (англ. Trygve
Reenskaug) тогда работающим над языком программирования Smalltalk в
Xerox PARC.
7. Оригинальная концепция
В оригинальной концепции была описана сама идея и роль каждого из
элементов: модели, представления и контроллера.
Но связи между ними были описаны без конкретизации.
8. Назначение
Разделение бизнес-логики (модели) от её визуализации (представления,
вида)
● К одной модели можно присоединить несколько видов, при этом не
затрагивая реализацию модели.
● Не затрагивая реализацию видов, можно изменить реакции на
действия пользователя (нажатие мышью на кнопке, ввод данных), для
этого достаточно использовать другойконтроллер.
● Ряд разработчиков специализируется только в одной из областей
9. Концепция
● Модель (англ. Model). Модель предоставляет знания: данные и
методы работы с этими данными, реагирует на запросы, изменяя своё
состояние. Не содержит информации, как эти знания можно
визуализировать.
● Представление, вид (англ. View). Отвечает за отображение
информации (визуализацию). Часто в качестве представления
выступает форма (окно) с графическими элементами.
● Контроллер (англ. Controller). Обеспечивает связь между
пользователем и системой: контролирует ввод данных пользователем
и использует модель и представление для реализации необходимой
реакции.
10. Две основные модификации
Пассивная модель — модель не имеет никаких способов воздействовать
на представление или контроллер, и используется ими в качестве
источника данных для отображения
Активная модель — модель оповещает представление о том, что в ней
произошли изменения, а представления, которые заинтересованы в
оповещении, подписываются на эти сообщения. Это позволяет сохранить
независимость модели как от контроллера, так и от представления.
19. Model-View-Presenter
Шаблон Model-View-Presenter возник в начале 1990-х в Taligent
Шаблон проектирования, производный от MVC, который используется в
основном для построенияпользовательского интерфейса.
В MVP Presenter берет на себя функциональность посредника (играя
роль, аналогичную контроллеру в MVC). Кроме того, Presenter отвечает за
управление событиями пользовательского интерфейса (например,
mouseDown, keyDown и т.д.), которое обычно было заботой контроллера.
20. Model-View-Presenter
MVP является производным MVC
• Два типа реализации
• Passive View
• Supervising Controller
• Presenter предполагает функциональность MVC Controller
• View отвечает за обработку событий пользовательского интерфейса
• Model становится строго модели предметной области
• Больше ориентированный на пользовательский интерфейс
23. Пассивный вид (Passive View)
В этом случае вид ничего не знает о модели, а только имеет простые
свойства, для отображения данных. Представитель считывает
информацию из модели и обновляет свойства вида.
Требует больше усилий (кода), но связность становится еще меньше.
24. Наблюдающий контроллер (Supervising
Controller)
Здесь вид знает про модель и является ответственным за привязку
данных (датабиндинг) модели к виду.
Контроллер же содержит в себе всю логику работы. Это немного
упрощает жизнь, но увеличивает связность.
27. Presentation Model (PM)
Модель представления – это логическое представлении UI без
привязки к элементам графического интерфейса.
28. 1) Содержит логику UI:
Например, при нажатии на кнопку, модель представления уведомляется об
этом и производит соответствующие действия.
2) Отображает данные модели:
Производит необходимую конвертацию и форматирование данных модели
для правильного отображения пользователю.
3) Хранит состояние UI:
Хранения текущего выбранного элемента списка, ошибок валидации и
прочее.
Представление (вид) (View) имеет доступ к данным, хранящимся в модели
представления для дальнейших манипуляций (отображение).
Преимуществом такого подхода также является то, что вы можете создавать
тесты для вашего UI без привязки к элементам граф. интерфейса.
29. Model-View-ViewModel (MVVM)
Значительной степени основан на MVC
• Специализация шаблона MVP известна как Presentation Model
• Встроенный специально для WPF и Silverlight сред
• Model и View такие же как MVC
• ViewModel is a “Model of the View”
• It extends the Model with Behaviors the View could use
• Data Binding between View and Model
• Passes commands between the View and Model
30. Model-View-ViewModel (MVVM)
ViewModel не общается напрямую с View. Вместо ViewModel
предоставляет свойства, которые могут легко быть привязаны
(прибиндены). View, в свою очередь, использует эти свойства и команды
(Commands) для отображения данных и извлечения их из ViewModel.
Также необязательно, чтоб View знал о ViewModel.
XAML (язык разметки) позволяет декларативно, путем отражения
(Reflection) привязать свойства ViewModel к соответствующим элементам
View. Благодаря тому, что ViewModel предоставляет доступ через
свойства к данным, уже готовым к употреблению (отформатированным и
тд), то View – очень простое и не содержит никакой логики.