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 работает с Представлением в абстрактном виде, через его интерфейс. Когда вызывается событие Представления, оно вызывает конкретный метод Presenterʼа, не имеющего ни параметров, ни возвращаемого значения. Presenter получает необходимые для работы метода данные о состоянии пользовательского интерфейса через интерфейс Представления и через него же передаёт в Представление данные из Модели и другие результаты своей работы.
public class MyModel
{
private int _state = 0;
public MyModel(int initState)
{
_state = initState;
}
public int getState()
{
return _state;
}
}
public class MyView : IView
{
public MyView()
{
// Some Code
}
}
public class MyPresenter : IPresenter
{
private readonly IView _view;
private readonly MyModel _myModel;
public MyPresenter(MyModel myModel, IView view)
{
_view = view;
_myModel = myModel;
}
}
public class App
{
public static void Start()
{
MyModel model = new(123);
MyView view1 = new();
MyPresenter presenter = new MyPresenter(model, view1);
}
}
Количество логики, допустимой в Представлении, различается для разных реализаций.
С точки зрения многоуровневой модели приложений в ООП, Presenter может рассматриваться как самостоятельный уровень между уровнем приложения и уровнем пользовательского интерфейса.
История
Эволюция и несколько вариантов шаблона MVP, в том числе отношения MVP с другими шаблонами проектирования (такими как MVC) были подробно проанализированы в статье Мартина Фаулера[1][2] , а также в статье Дерека Грира[3].
См. также
Примечания
Ссылки
int main()
{
printf("Hi");
return 0;
}
| Это заготовка статьи о программировании. Помогите Википедии, дополнив её. |