Модель – представление – ведущий - Википедия - Model–view–presenter

Диаграмма, изображающая шаблон проектирования GUI Model View Presenter (MVP).

Модель – представление – ведущий (MVP) является выводом модель – представление – контроллер (MVC) архитектурный образец, и используется в основном для создания пользовательских интерфейсов.

В MVP ведущий берет на себя функции «посредника». В MVP вся логика представления передается докладчику.[1]

История

Шаблон программного обеспечения модель-представление-презентатор возник в начале 1990-х гг. Taligent, совместное предприятие яблоко, IBM, и Hewlett Packard.[2] MVP - это базовая модель программирования для разработки приложений в Taligent. C ++ среда CommonPoint. Позже модель была перенесена Taligent в Ява и популяризирован в статье технического директора Taligent Майка Потеля.[3]

После прекращения деятельности Taligent в 1998 году Энди Бауэр и Блэр МакГлашан из Дельфин Smalltalk адаптировали шаблон MVP, чтобы сформировать основу для своей инфраструктуры пользовательского интерфейса Smalltalk.[4] В 2006 г. Microsoft начал включать MVP в свою документацию и примеры программирования пользовательского интерфейса в .NET Framework.[5][6]

Эволюция и несколько вариантов шаблона MVP, включая взаимосвязь MVP с другими шаблонами проектирования, такими как MVC, подробно обсуждаются в статье Мартин Фаулер[7]и еще один Дерек Грир.[8]

Обзор

MVP - это пользовательский интерфейс архитектурный образец разработан, чтобы облегчить автоматизированный модульное тестирование и улучшить разделение проблем в логике представления:

  • В модель - это интерфейс, определяющий данные, которые должны отображаться или иным образом использоваться в пользовательском интерфейсе.
  • В Посмотреть - пассивный интерфейс, который отображает данные (модель) и маршрутизирует пользовательские команды (События ) ведущему действовать в соответствии с этими данными.
  • В ведущий действует на модель и вид. Он извлекает данные из репозиториев (модель) и форматирует их для отображения в представлении.

Обычно реализация представления создает экземпляры конкретный объект презентатора, предоставляющий ссылку на самого себя. Следующее C # код демонстрирует простой конструктор представления, где ConcreteDomainPresenter реализует IDomainPresenter интерфейс:

общественный учебный класс DomainView : IDomainView{    частный IDomainPresenter _domainPresenter = ноль;    ///  Конструктор.     общественный DomainView()    {        _domainPresenter = новый ConcreteDomainPresenter(это);    }}

Степень логики, разрешенная в представлении, варьируется в зависимости от реализации. С одной стороны, представление полностью пассивно, перенаправляя все операции взаимодействия ведущему. В этой формулировке, когда пользователь запускает метод события представления, он ничего не делает, кроме как вызывает метод ведущего, который не имеет параметров и возвращаемого значения. Затем докладчик извлекает данные из представления с помощью методов, определенных интерфейсом представления. Наконец, ведущий работает с моделью и обновляет представление с результатами операции. Другие версии model-view-presenter допускают некоторую свободу в отношении того, какой класс обрабатывает конкретное взаимодействие, событие или команду. Это часто больше подходит для веб-архитектур, где представление, которое выполняется в браузере клиента, может быть лучшим местом для обработки конкретного взаимодействия или команды.

С точки зрения многоуровневости, класс презентатора можно рассматривать как принадлежащий к прикладному уровню в многослойная архитектура системы, но его также можно рассматривать как отдельный уровень докладчика между уровнем приложения и пользовательский интерфейс слой.

Реализации

.СЕТЬ

В .СЕТЬ Environment поддерживает шаблон MVP, как и любая другая среда разработки. Одна и та же модель и класс презентатора могут использоваться для поддержки нескольких интерфейсов, таких как ASP.NET Веб-приложение, Windows Forms приложение, или Silverlight заявление. Ведущий получает и устанавливает информацию из / в представление через интерфейс, к которому может получить доступ компонент интерфейса (представления).

В дополнение к ручной реализации шаблона, структура модель-представление-презентатор может использоваться для поддержки шаблона MVP более автоматизированным способом.

Ява

В Ява (AWT /Качать /SWT ), шаблон MVP можно использовать, разрешив классу пользовательского интерфейса реализовать интерфейс представления.

Тот же подход можно использовать для веб-приложений Java, поскольку современные веб-инфраструктуры на основе компонентов Java позволяют разрабатывать клиентскую логику с использованием того же компонентного подхода, что и толстые клиенты.

Реализация MVP в Google Web Toolkit требуется только, чтобы какой-либо компонент реализовал интерфейс представления. Такой же подход возможен с использованием Ваадин или Эхо2 Веб-фреймворк.

Фреймворки Java включают следующее:

PHP

По состоянию на PHP Гибкая среда выполнения, есть широкие возможности подходов к логике приложения. Реализация уровня модели оставлена ​​на усмотрение программиста приложения.

Фреймворки PHP включают следующее:

Котлин

Котлин и фреймворки на его основе, такие как Kodein Framework, ориентированы на многоплатформенную совместимость. Цель состоит в том, чтобы сфокусироваться только один раз на бизнес-логике и реализовать ее, так как фреймворк совместим с каждой платформой.

Смотрите также

Рекомендации

  1. ^ «Проект GWT». developers.google.com.
  2. ^ Необходимы исследования - эта модель использовалась в сфере ERP (Lawson Software Inc.) задолго до этого.
  3. ^ «MVP: Model-View-Presenter. Модель Taligent Programming для C ++ и Java». Майк Потель
  4. ^ «Скручивание триады. Эволюция инфраструктуры приложений Dolphin Smalltalk MVP». Энди Бауэр, Блэр МакГлашан
  5. ^ «Проблемы с журналом MSDN». msdn.microsoft.com.
  6. ^ "Паттерн модель-представление-презентатор (MVP)". msdn.microsoft.com.
  7. ^ "Архитектуры графического интерфейса" Мартин Фаулер
  8. ^ «Шаблоны архитектуры интерактивных приложений». www.aspiringcraftsman.com.

внешняя ссылка