Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Теперь самое время рассказать об отличиях MVP от предыдущих архитектур ...для красоты и ясности лучше заменить Формы и элементы: на От «Формы и элементы»: и в двух других пунктах аналогично.
в MVP есть модель и presenter манипулирует этой моделью при помощи синхронизации через обозреватель (Observer Synchronization), когда обновляет представление.
MVP has a model and the presenter is expected to manipulate this model with Observer Synchronization then updating the view., т.е.
в MVP есть модель и задачей presenter'a является манипулирование этой моделью, после чего вид обновляется средствами Observer Synchronization.
Although direct access to the widgets is allowed, this should be in addition to using the model not the first choice.как
И хотя прямой доступ к элементам управления у презентера разрешен, использовать этот доступ — плохой тон.
К тому же, вы можете перенести полностью всю логику представления в presenter и получить то, что я называю Passive View.Смысл предложения, на мой взгляд, состоял в том, что
И хотя прямой доступ к элементам управления у презентера разрешен, первым по приоритету способом обновления виджетов должна быть Object Synchronization, причем желательно без прямого обращения виджетов к модели.Т.е. если в MVP Supervising Controller количество привязок вида к модели уменьшается за счет передачи управления логикой обновления Presenter'у, который после обработки сценария передает виду конкретные данные, то в MVP Passive View вид вообще не обозревает модель, и лучше, если изменения в нем происходят в процессе (явного или не очень) обозревания Presenter'а (часто через реализацию видом интерфейса, описывающего все возможные указания от Presenter'a), чем прямым изменением виджетов из последнего, т.к. это упрощает работу с несколькими видами через один Presenter. Это не «нормальные циклы и goto», это скорее «for, while и do while в конкретном случае». Об этом и говорится в конце:
Осуществление обновления представлений разными вариациями MVP осуществляются по-разному. Количество способов начинается от обновления через обозреватель (Observer Synchronization) и заканчивается ручными обновлениями каждого элемента управления presenter-ом., где, кстати, лучше будет
Обновление представлений в разных подвидах MVP осуществляется по-разному.Способы варьируются от обновления через обозреватель (Observer Synchronization) до ручных обновлений каждого элемента управления presenter-ом.
Martin Fowler — GUI Architectures. Часть 4