it-swarm.com.ru

Что такое Model View Presenter?

Может ли кто-нибудь объяснить как можно более простым способом, что такое шаблон "Представление модели"? В чем разница с Model View Controller? Что лучше или для каких целей?

54
bluediapente

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

http://martinfowler.com/eaaDev/uiArchs.html

Чтобы суммировать различия, контроллеры в MVC имеют больший контроль над пользовательским интерфейсом и обрабатывают события, в то время как презентатор в MVP более пассивен и просто представляет информацию через пользовательский интерфейс.

В общем, нет большой разницы, и часто грань между ними размыта.

28
Cameron MacFarland

Model View Presenter и Model View Controller пытаются решить одну и ту же проблему "разделения проблем".

Основное отличие, которое вы обнаружите, состоит в том, что Model View Controller (MVC) часто реализуется с некоторой связью между представлением и некоторой моделью какого-либо рода - таким образом, данное представление специально предназначено для обеспечения визуализации данного объекта (модели).

В шаблоне Presenter Model Viewer вы обычно обнаруживаете, что Presenter заботится о работе с моделью и решает, какая информация из нее понадобится для формирования своего рода визуализации.

На этой диаграмме стрелки представляют зависимости:

MVC and MVP dependencies

Обычно вы слышите, как обсуждается этот шаблон при обсуждении инфраструктуры ASP.NET MVC, и сталкиваетесь с информацией о шаблоне MVP и его реализации в ASP.NET WebForms. По моему опыту, я считаю, что WebForms сами по себе являются шаблонной средой MVP - это не так. WebForms, однако, позволяют очень легко реализовать шаблон MVP - ваш лучший ресурс для этого - исследовать Фабрику программного обеспечения веб-клиента из команды Patterns and Practices:

Сайт CodePlex: http://www.codeplex.com/websf

Отличный скринкаст на эту тему: http://www.pnpguidance.net/Screencast/MVPBundleScreencastWCSFModelViewPresenterDesignPattern.aspx

57
apiguy

Фаулер разделяет MVP на 2 модели: контролирующий докладчик и пассивный вид.
Aviad Ezra имеет хорошую статью на эту тему http://aviadezra.blogspot.com/2008/10/model-view-presenter-design-pattern.html .
Я думаю, что MVP лучше для настольных компьютеров, а MVC - для веб-приложений, потому что в настольных ПК Model имеет возможность поднять событие

5
Anton Setiawan

У Dolphin Smalltalk раньше была реализация MVC, но затем они перешли на MVP.

Вот технический документ , который описывает, что они сделали и почему.

Система IBM Taligent также использовала MVP - они описывают, что и почему здесь .

3
Dafydd Rees