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

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

4 ответа

Решение

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

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

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

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

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

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

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

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

MVC и MVP зависимость

Обычно вы слышите, как обсуждается этот шаблон при обсуждении среды 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

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

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

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

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

Другие вопросы по тегам