Как стать автором
Обновить

Комментарии 1

Хорошая статья и перевод хороший, но закралось несколько неточностей, искажающих мысль автора и/или усложняющих «переваривание» текста:

1:
В списке, идущем после
Теперь самое время рассказать об отличиях MVP от предыдущих архитектур ...
для красоты и ясности лучше заменить Формы и элементы: на От «Формы и элементы»: и в двух других пунктах аналогично.

2:
Там же:
в 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.

Автор рассматривает и показывает на диаграмме модель MVP Supervising Controller. Вы же посмотрите на диаграмму, которая дальше следует — на ней явно происходит это самое обновление вида по паттерну Observer. Presenter в этом виде MVP лишь управляет логикой изменения представления, само изменение производится видом-наблюдателем модели.

3:
По этим же причинам нельзя было так вольно переводить в том же пункте
Although direct access to the widgets is allowed, this should be in addition to using the model not the first choice.
как
И хотя прямой доступ к элементам управления у презентера разрешен, использовать этот доступ — плохой тон.

Смысл, думается, здесь не в том, что прямое изменение виджетов из Presenter'a является дурным тоном. Вы же ранее совершенно верно перевели, что
К тому же, вы можете перенести полностью всю логику представления в 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-ом.


Сразу хочу сказать, что с MVC и MVP только недавно начал работать, так что если где не прав, объясните.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории