Что такое MVP-Passive View и MVP-Supervising контроллер - PullRequest
34 голосов
/ 21 марта 2011

Пожалуйста, опишите на простом примере различия между MVP-Passive View и MVP-Supervising.Было бы лучше показать, как данные с контролем связываются, а вход проверяется с использованием обоих методов mvp - пассивного просмотра и контролирующего контроллера.Спасибо

1 Ответ

59 голосов
/ 21 марта 2011

Разница заключается в обновлениях слоя представления.

На странице Модель-Представление-Представитель на странице MSDN:

При обновлении моделипредставление также должно быть обновлено, чтобы отразить изменения.Просмотр обновлений может быть обработан несколькими способами.Варианты Model-View-Presenter, Passive View и Supervising Controller, определяют разные подходы к реализации обновлений представлений.

В Passive View , докладчик обновляет представление, чтобы отразить изменения в модели.Взаимодействие с моделью осуществляется исключительно ведущим;представление не знает об изменениях в модели.

В Контролирующий контроллер представление напрямую взаимодействует с моделью для выполнения простой привязки данных, которая может быть определена декларативно, без вмешательства докладчика.Ведущий обновляет модель;он манипулирует состоянием представления только в тех случаях, когда требуется сложная логика пользовательского интерфейса, которая не может быть определена декларативно.Примеры сложной логики пользовательского интерфейса могут включать изменение цвета элемента управления или динамическое скрытие / отображение элементов управления.Рисунок 1 иллюстрирует логическое представление вариантов Passive View и Supervising Controller.

Решение об использовании Passive View или Supervising Controller в первую очередь зависит от того, насколько тестируемым вам нужен вашприложение быть.Если тестируемость является основной проблемой в вашем приложении, пассивное представление может быть более подходящим, потому что вы можете проверить всю логику пользовательского интерфейса, протестировав докладчика.С другой стороны, если вы предпочитаете простоту кода, а не полную тестируемость, Supervising Controller может быть лучшим вариантом, потому что для простых изменений пользовательского интерфейса вам не нужно включать код в презентатор, который обновляет представление.При выборе между пассивным представлением и контролирующим контроллером учитывайте следующее:

  • Оба варианта позволяют повысить тестируемость логики представления.
  • Пассивное представление обычно обеспечивает большую площадь тестирования, чемКонтролирующий контроллер, поскольку вся логика обновления представления размещена в презентаторе.
  • Контролирующему контроллеру обычно требуется меньше кода, чем в пассивном представлении, поскольку презентатор не выполняет простых обновлений представления.

Дальнейшее чтение:

Пассивный просмотр:

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

http://codebetter.com/jeremymiller/2007/05/31/build-your-own-cab-part-4-the-passive-view/

Контролирующий контроллер:

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

http://codebetter.com/jeremymiller/2007/05/25/build-you-own-cab-part-3-the-supervising-controller-pattern/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...