Использование ReSharper для сортировки членов по типу, а затем по имени

Model-View-Presenter

В MVP ведущий содержит бизнес-логику пользовательского интерфейса для представления. Все вызовы делегата View непосредственно в Presenter. Презентатор также отделен напрямую от представления и разговаривает с ним через интерфейс. Это должно позволить насмехаться над представлением в модульном тесте. Одним из общих атрибутов MVP является то, что должно быть много двухсторонней диспетчеризации. Например, когда кто-то нажимает кнопку «Сохранить», обработчик события делегирует метод «OnSave». Как только сохранение будет завершено, Presenter затем перезвонит View через его интерфейс, чтобы View мог показать, что сохранение завершено.

MVP имеет тенденцию быть очень естественной моделью для достижения разделенного представления в Web Forms. Причина в том, что представление всегда создается во время исполнения ASP.NET. Вы можете узнать больше об обоих вариантах .

Два основных варианта

Пассивный вид: вид настолько тупой, насколько это возможно, и содержит почти нулевую логику. Ведущий - средний человек, который разговаривает с Видом и Моделью. Вид и модель полностью защищены друг от друга. Модель может создавать события, но Presenter подписывается на них для обновления представления. В пассивном представлении нет прямой привязки данных, вместо этого View предоставляет свойства сеттера, которые Presenter использует для установки данных. Все состояние управляется в презентаторе, а не в представлении.

  • Pro: максимальная поверхность проверки; чистое разделение View и Model
  • Con: больше работы (например, всех свойств сеттера), поскольку вы выполняете все привязки данных самостоятельно.

Контролирующий контроллер: Ведущий обрабатывает жесты пользователя. Вид привязывается к модели непосредственно через привязку данных. В этом случае задача Презентатора заключается в том, чтобы передать модель в представление, чтобы она могла привязываться к ней. Презентатор также будет содержать логику для жестов, таких как нажатие кнопки, навигация и т. Д.

  • Pro: при использовании привязки данных количество кода уменьшается.
  • Con: существует меньше проверяемой поверхности (из-за привязки данных), и в представлении меньше инкапсуляции, так как она напрямую связана с моделью.

Model-View- Контроллер

В MVC контроллер отвечает за определение того, какой вид отображать в ответ на любое действие, в том числе при загрузке приложения. Это отличается от MVP, где действия маршрутизируются через View to Presenter. В MVC каждое действие в представлении коррелирует с вызовом контроллера вместе с действием. В Интернете каждое действие включает вызов URL-адреса, с другой стороны которого отвечает Контроллер. Как только этот контроллер завершит обработку, он вернет правильный вид. Последовательность продолжается таким образом на протяжении всего срока действия приложения:

    Action in the View
        -> Call to Controller
        -> Controller Logic
        -> Controller returns the View.

Еще одна большая разница в MVC заключается в том, что представление напрямую не привязывается к модели. Взгляд просто изображается и полностью без гражданства. В реализациях MVC у View обычно не будет никакой логики в коде. Это противоречит MVP, где это абсолютно необходимо, потому что, если View не передает делегату Presenter, он никогда не будет вызван.

Модель представления

Еще один образец для просмотра является моделью модели представления. В этом шаблоне нет презентатора. Вместо этого представление связывается непосредственно с моделью презентации. Модель представления - это модель, созданная специально для представления. Это означает, что эта модель может выставлять свойства, которые никогда не были бы применены к модели домена, поскольку это было бы нарушением разделения. В этом случае модель представления привязывается к модели домена и может подписаться на события, исходящие из этой Модели. Затем «Вид» подписывается на события, поступающие из модели презентации, и соответственно обновляет их. Модель представления может выставлять команды, которые использует вид для вызова действий. Преимущество этого подхода заключается в том, что вы можете существенно удалить код-код вообще, поскольку PM полностью инкапсулирует все поведение для представления. Этот шаблон является очень сильным кандидатом для использования в приложениях WPF и также называется Model-View-ViewModel .

Существует статья MSDN о модели представления и раздел в Руководстве по композитным приложениям для WPF (бывший Призм) о Разделенные шаблоны презентаций

30
задан marcusstarnes 1 February 2012 в 13:24
поделиться