Table of Contents

Оригинал статьи: Interactive Application Architecture Patterns

Введение

В данной статье рассматриваются модели проектирования MVC, MVP и PAC. Они предназначены для разработки интерактивных приложений, путем разделения каждого из них на несколько связанных между собой компонент. Данные модели похожи, однако каждая из них имеет свою область применения и необходимо правильно понимать для чего предназначена каждая из моделей.

The Model–View-Controller Pattern

Шаблон проектирования Model-View-Controller нацелен на разделение домена приложения, пользовательского интерфейса и взаимодействия с пользователем на три отдельные части. Он был изобретен с целью обеспечения интерфейса пользователям для управления несколькими видами данных. Следующая диаграмма показывает структуру шаблона Smalltalk-80 MVC:

Компоненты

Существует общее заблуждение о взаимосвязи между компонентами MVC. Многие считают, что цель Контроллера - это отделение Представления от Модели. Однако, шаблон MVC позволяет отвязать домен приложения от интерфейса путем использования специального паттерна (Observer Pattern), а не через Контроллер. Контроллер был задуман в качестве посредника между пользователем и приложением, а не между Представлением и Моделью.

The Model-View-Controller Pattern for Web Applications

С появлением Интернет появился аналог оригинального шаблона MVC для использования при разработке веб приложений (Web-based MVC). По аналогии с оригинальным MVC, Web-based MVC помогает разделить домен приложения (на стороне клиента), представление и обработку ввода (на стороне сервера) на три отдельные части.

Следующая диаграмма представляет собой описание того, как шаблон MVC адаптирован для разработки веб приложений:

Компоненты:

The Model-View-Presenter Pattern

Шаблон Model-View-Presenter является вариацией шаблона Model-View-Controller и также разделяет домен приложения, представление и пользовательский ввод на отдельные компоненты. Всего существует несколько общепринятых шаблонов под названием “Model-View-Presenter”. В связи с этим, в данной статье рассматривается оригинальный шаблон Model-View-Presenter наряду с некоторым его наиболее популярными вариантами.

The Taligent Model-View-Presenter Pattern.

Данный шаблон разделяет данные приложения, данные спецификации, операции с данными, координацию приложения, взаимодействие с пользователем и представление на отдельные компоненты.

На следующей диаграмме показана структура шаблона Taligent Model-View-Presenter:

Компоненты:

The Dolphin Smalltalk Model-View-Presenter Pattern

Данный шаблон разделяет домен приложения, представление и логику представления на отдельные части: Model, View, Presenter.

На следующей диаграмме показана структура шаблона Dolphin Smalltalk Model-View-Presenter.

Компоненты:

Сравнение Dolphin Smalltalk MVP и Smalltalk-80 MVC.

Кажется, что различий данными шаблонами нет. Оба состоят из трех частей. Оба паттерна имеют Модель и Представление. Контроллер MVC и Презентер Dolphin SmallTalk MVP участвуют в обновлении Модели. Однако, их главное отличие состоит в понимании основных функций Контроллера и Презентера. Сравним их функции.

Контроллер в MVC:

Презентер в MVP:

The Supervising Controller Pattern

Данный шаблон разделяет представление и логику представления приложения на отдельные компоненты: View и Controller. На Представление (View) возложена ответственность простой логики визуализации, а Контроллер (Controller) предназначен для реагирования на пользовательский ввод и обработку сложной логики представления.

На следующей диаграмме показана структура шаблона Supervising Controller:

The Passive View Pattern

Данный шаблон разделяет представление и логику представления приложения на отдельные компоненты: Представление (View) и Контроллер (Controller). Контроллер берет на себя ответственность за реагирование на события пользователя и логику представления. В отличие от Supervising Controller Pattern, в данном паттерне Представление не поддерживает никакой связи с доменным слоем и полагается исключительно на Контроллер.

На следующей диаграмме показана структура шаблона Passive View

The Presentation-Abstraction-Control Pattern

Шаблон PAC представляет собой архитектуру, которая разделяет приложение по иерархии взаимодействующих компонентов. Каждый уровень состоит из Презентации (Presentation), Абстракции (Abstraction) и Контроля (Control). PAC стремится разложить приложение на иерархию абстракций для достижения согласованного фреймворка на любом уровне абстракции в приложении.

На следующей диаграмме показана диаграмма шаблона PAC:

Компоненты:

Сравнение Паттернов.

В следующей таблице представлено краткое сравнение компонентов вышеуказанных моделей с их описанием и ролями в архитектуре.

Заключение.

Были рассмотрены шаблоны проектирования Model-View-Controller, Model-View-Presenter, and Presentation-Abstraction-Control. Все они похожи во многих отношениях, однако каждый из них предназначен для решения своей конкретной задачи.