Что такое 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 заботится о работе с моделью и решает, какая информация из нее понадобится для формирования своего рода визуализации.
На этой диаграмме стрелки представляют зависимости:
Обычно вы слышите, как обсуждается этот шаблон при обсуждении среды 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 - они описывают, что и почему здесь.