Модель-представление-презентатор

Модель-представление-презентатор ( MVP ) является производным от модель-представление-контроллер (MVC) архитектурного шаблона и используется в основном для создания пользовательских интерфейсов.
В MVP ведущий берет на себя функционал «посредника». В MVP вся логика представления передается презентатору. [ 1 ]
История
[ редактировать ]Программный шаблон модель-представление-презентатор возник в начале 1990-х годов в Taligent , совместном предприятии Apple , IBM и Hewlett-Packard . [ 2 ] MVP — это базовая модель программирования для разработки приложений в C++ среде CommonPoint компании Taligent на основе . Позже этот шаблон был перенесен компанией Taligent на Java и популяризирован в статье технического директора Taligent Майка Потеля. [ 3 ]
После прекращения поддержки Taligent в 1998 году Энди Бауэр и Блэр МакГлашан из Dolphin Smalltalk адаптировали шаблон MVP, чтобы сформировать основу для своей структуры пользовательского интерфейса Smalltalk. [ 4 ] В 2006 году Microsoft начала включать MVP в свою документацию и примеры программирования пользовательского интерфейса в .NET Framework . [ 5 ] [ 6 ]
Эволюция и многочисленные варианты шаблона MVP, включая связь MVP с другими шаблонами проектирования, такими как MVC, подробно обсуждаются в статье Мартина Фаулера. [ 7 ] и еще один от Дерека Грира. [ 8 ]
Обзор
[ редактировать ]пользовательского интерфейса, MVP — это архитектурный шаблон разработанный для облегчения автоматизированного модульного тестирования и улучшения разделения задач в логике представления:
- Модель — это интерфейс , определяющий данные, которые будут отображаться или иным образом обрабатываться в пользовательском интерфейсе.
- Представление — это пассивный интерфейс, который отображает данные (модель) и направляет пользовательские команды ( события ) презентатору для воздействия на эти данные.
- Ведущий действует в соответствии с моделью и представлением. Он извлекает данные из репозиториев (модели) и форматирует их для отображения в представлении.
Обычно реализация представления создает экземпляр конкретного объекта-презентатора, предоставляя ссылку на себя. Следующий код C# демонстрирует простой конструктор представления:
public class Presenter : IPresenter
{
public Presenter(IView view)
{
// ...
}
}
public class View : IView
{
private IPresenter _presenter;
public View()
{
_presenter = new Presenter(this);
}
}
Степень логики, разрешенная в представлении, варьируется в зависимости от реализации. С одной стороны, представление полностью пассивно, перенаправляя все операции взаимодействия презентатору. В этой формулировке, когда пользователь запускает метод события представления, он ничего не делает, а вызывает метод презентатора, который не имеет параметров и возвращаемого значения. Затем ведущий извлекает данные из представления с помощью методов, определенных интерфейсом представления. Наконец, ведущий работает с моделью и обновляет представление результатами операции. Другие версии model-view-presenter допускают некоторую свободу в отношении того, какой класс обрабатывает конкретное взаимодействие, событие или команду. Зачастую это больше подходит для веб-архитектур, где представление, выполняемое в браузере клиента, может быть лучшим местом для обработки конкретного взаимодействия или команды.
С точки зрения многоуровневого представления класс презентатора можно рассматривать как принадлежащий уровню приложения в системе с многоуровневой архитектурой , но его также можно рассматривать как собственный уровень презентатора между уровнем приложения и уровнем пользовательского интерфейса .
Реализации
[ редактировать ].СЕТЬ
[ редактировать ]Среда .NET поддерживает шаблон MVP так же, как и любая другая среда разработки. Одна и та же модель и класс презентатора могут использоваться для поддержки нескольких интерфейсов, например веб-приложения ASP.NET или приложения Windows Forms . Ведущий получает и устанавливает информацию из/в представление через интерфейс, к которому может получить доступ компонент интерфейса (представления).
Помимо реализации шаблона вручную, для более автоматизированной поддержки шаблона MVP можно использовать структуру модель-представление-презентатор.
Ява
[ редактировать ]В приложении Java ( AWT / Swing / SWT ) шаблон MVP можно использовать, разрешив классу пользовательского интерфейса реализовать интерфейс представления.
Тот же подход можно использовать для веб-приложений Java, поскольку современные веб-фреймворки на основе компонентов Java позволяют разрабатывать логику на стороне клиента, используя тот же компонентный подход, что и толстые клиенты.
Для реализации MVP в Google Web Toolkit требуется только, чтобы какой-либо компонент реализовал интерфейс представления. Тот же подход возможен с использованием Vaadin или веб-инфраструктуры Echo2 .
Java-фреймворки включают в себя следующее:
PHP
[ редактировать ]Что касается гибкой среды выполнения PHP , существуют широкие возможности подходов к логике приложения. Реализация уровня модели остается на усмотрение конечного прикладного программиста.
PHP-фреймворки включают в себя следующее:
- КодИгнитер
- Ларавел
- Чистая платформа
См. также
[ редактировать ]- Многоуровневая архитектура
- Модель-представление-контроллер
- Модель-представление-представление-модель
- Сначала ведущий (программный подход)
Ссылки
[ редактировать ]- ^ «Проект ГВТ» . Developers.google.com .
- ^ Требуется исследование. Эта модель использовалась в сфере ERP (Lawson Software Inc.) задолго до этого.
- ^ «MVP: Model-View-Presenter. Талантливая модель программирования для C ++ и Java». Майк Потель
- ^ «Изменение триады. Эволюция среды приложений Dolphin Smalltalk MVP». Энди Бауэр, Блер МакГлашан
- ^ «Выпуски журнала MSDN» . msdn.microsoft.com . 7 октября 2019 г.
- ^ «Шаблон Модель-Представление-Презентатор (MVP)» . msdn.microsoft.com . 27 апреля 2010 г.
- ^ «Архитектура графического интерфейса» Мартин Фаулер
- ^ «Шаблоны архитектуры интерактивных приложений» . www.aspiringcraftsman.com .