Model-View-Presenter
Model-View-Presenter | |
---|---|
Model View Presenter | |
Структура |
|
Родственные шаблоны | Model-View-Controller |
Описан в 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(initState)
{
_state = initState;
}
public getState(){
return _state;
}
}
public class MyView: IView
{
private IPresenter _presenter;
public MyView()
{
_presenter = new MyPresenter(this);
}
}
public class MyPresenter: IPresenter
{
private IView _view;
private MyModel _myModel;
public MyPresenter(IView view)
{
_view = view;
_myModel= new MyModel(1);
}
}
История
MVP, возник как альтернатива MVC. Подробный анализ в статье Мартина Фаулера[1][2] , а также в статье Дерека Грира[3].
См. также
Примечания
Ссылки
- Model-View-Controller в .Net эта ссылка не рабочая
- Large scale application development and MVP эта ссылка редиректится сюда http://www.gwtproject.org/?csw=1
- https://habrahabr.ru/post/171925/
- https://habrahabr.ru/post/107698/
int main()
{
printf("Hi");
return 0;
}
| Это заготовка статьи о программировании. Помогите Википедии, дополнив её. |