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