Паттерны проектирования MVC, MVP, MVVM Подготовил Кочетков Илья, Старший разработчик ПО, ДАГС, Диджитал Дизайн
Содержание Введение Компоненты View Model Controller View Model Presenter MVC MVP MVVM Что же дальше? Заключение
Введение MVC, MVP, MVVM – комплексные паттерны проектирования Играют роль архитектурного каркаса для приложения Повышают гибкость приложения и читабельность кода Разбивают приложение на самостоятельные слои
Model (Модель) Абстрагирует слой данных Содержит бизнес-логику приложения (опционально) Знает только о самой себе и не зависит ни от кого Может поддерживать состояния Бывает активной и пассивной
View (Представление) Абстрагирует пользовательский интерфейс Отображает данные приложения Не влияет на модель Может содержать часть бизнес-логики Примеры представлений: HTML-страница WPF-форма Win. Forms
Controller (Контроллер) Обеспечивает взаимодействие между пользователем и системой Преобразует данные модели для вывода в представление Реагирует на события Контролирует вводимые данные
View. Model (Модель представления) Используется в приложениях со data-binding (связывание данных). Абстракция представления Обертка данных из модели, подлежащих связыванию Содержит команды, используемые в представлении
Presenter Аналогичен Controller в десктопных приложениях Отвечает за обработку событий представления (например, key. Down, mouse. Click) Извлекает данные из хранилища и форматирует для отображения в представлении
MVC Контроллер решает, какое представление отобразить События влияют только на контроллер Один контроллер может работать с многими представлениями Устаревает Пример: ASP. NET MVC
MVP Presenter – абстракция представления Представление и представитель работают друг с другом Один представитель работает только с одним представлением Представитель работает с представлением через заранее описанный интерфейс Представление полностью абстрагировано от бизнес-логики Пример: Windows Forms
MVVM Отличается от MVP спецификой использования модели представления View. Model становится «контекстом» представления Используется для установки «связывания» (binding) Одно представление работает с одним отображением Обновление свойств основано на паттерне INotify. Property. Changed Пример: WPF / Silverlight
Что же дальше? MVC морально устаревает на фоне развития веб-технологий В частности, быстро развиваются Front. End фреймворки (Angular. Js, Backbone. Js, Ember. Js) В следствие чего распространяются решения разделенных веб-приложений
Заключение MVC, MVP, MVVM – «большие» игроки в проектировании Заложенный фундамент используется и развивается по сей день Не стоит строго придерживаться аспектов одного шаблона
WPF Первый релиз в 2006 году Компонент. NET Framework (начиная с 3. 0) для построения GUI-приложений Использует для отображения Direct. X Интерфейс определяется через XAML Идеален для применения MVVM-паттерна