Подтвердить что ты не робот

Что такое контроллер MVP-Passive View и MVP-Supervising

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

4b9b3361

Ответ 1

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

На странице Model-View-Presenter на MSDN:

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

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

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

Решение использовать Пассивный просмотр или Контролирующий контроллер в первую очередь зависит от того, насколько вы можете тестировать ваше приложение. Если тестируемость является основной проблемой в вашем приложении, пассивный просмотр может быть более подходящим, потому что вы можете протестировать всю логику пользовательского интерфейса, проверив презентатора. С другой стороны, если вы предпочитаете простоту кода по полной проверке, 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/