Model-View-Presenter
Model-View-Presenter | |
---|---|
Model View Presenter | |
Описан в Design Patterns | Нет |
Model-View-Presenter (MVP) — шаблон проектирования, производный от MVC, который используется в основном для построения пользовательского интерфейса.
Элемент Presenter в данном шаблоне, берет на себя функциональность посредника (аналогично контроллеру в MVC), а так же отвечает за управление событиями пользовательского интерфейса (такими как использование мыши), чем в других шаблонах обычно занимается представление.
Описание шаблона
MVP — шаблон проектирования пользовательского интерфейса, который был разработан для облегчения автоматического модульного тестирования и улучшения разделения ответственности в презентационной логике (отделения логики от отображения):
- Модель (англ. Model) представляет собой интерфейс, определяющий данные для пользовательского интерфейса.
- Представление (англ. View) - это интерфейс, который отображает данные (Модель) и маршрутизирует пользовательские команды (или события) Presenter-у, чтобы тот действовал над этими данными.
- Presenter действует над Моделью и Представлением. Он извлекает данные из хранилища (Модели) и форматирует их для отображения в Представлении.
Обычно, реализация Представления создаёт экземпляр конкретного объекта Presenter-а и предоставляет ссылку на себя. (Формально параметром конструктора Presenter’a является интерфейс Представления, в то время как в конструктор передается конкретная реализация Представления). Когда вызывается событие Представления, оно вызывает конкретный метод Presenter’а, не имеющего параметров и возвращаемого значения. Далее Presenter через интерфейс получает данные из Представления, после чего вызывает методы Модели и устанавливает через интерфейс данные из Модели в Представление.
Следующий код C# демонстрирует простой конструктор Представления, здесь ConcreteDomainPresenter есть реализация интерфейса IDomainPresenter:
public class DomainView: IDomainView
{
private IDomainPresenter domainPresenter;
public DomainView() // Constructor
{
this.domainPresenter = new ConcreteDomainPresenter(this);
}
}
Количество логики, допустимой в Представлении, различается для разных реализаций.
С точки зрения многоуровневой модели приложений в ООП, Presenter может рассматриваться как самостоятельный уровень между уровнем приложения и уровнем пользовательского интерфейса.
История
Эволюция и несколько вариантов шаблона MVP, в том числе отношения MVP с другими шаблонами проектирования (такими как MVC) были подробно проанализированы в статье Мартина Фаулера[1] [2] , а также в статье Дерека Грира[3].
См. также
Ссылки
int main()
{
printf("Hi");
return 0;
}
| Это заготовка статьи о программировании. Помогите Википедии, дополнив её. |