2013-03-23 2 views
14

Я пытаюсь понять, есть ли разница между шаблонами Model-View-Presenter и Model-View-Adapter, и если да, то какая разница. Я не нашел ни одного онлайн-ресурсов, которые сравнивали бы/контрастировали бы их, поэтому я даже не уверен, действительно ли они разные.В чем разница между Model-View-Presenter и Model-View-Adapter?

Описания, которые я нашел из них, звучат, по существу, идентично мне. Из того, что я собрал, в обоих случаях поток управления в основном:

View <-- Adapter/Presenter --> Model 
(where Adapter/Presenter can also respond to events from View and Model) 

View: the UI 
Adapter/Presenter: main logic; mediator between the UI and the data model 
Model: the data model 

Адаптер/Presenter «знает о» Вид и модель, но вид и модель не знаю, о ком-либо другом чем они сами.

Я ожидаю, что есть тонкость, которую я здесь полностью отсутствует. Что это?

ответ

10

Единственное, что я могу думать о MVA, как правило, связано с наличием нескольких адаптеров между представлением и моделью. Хотя вам ничего не мешает сделать это в MVP, я думаю, MVP подразумевает сильную триаду.

Обновление (годы спустя): в ретроспективе, я считаю, что ключевым отличием будет поток управления. В MVP View запускает/создает/вызывает Presenter, который делегирует модель и отвечает на представление. В MVA, когда появляются сообщения, выбирается адаптер, который затем посредничает между моделью и представлением. Поскольку MVP View запускает/создает/вызывает Presenter, выбор между несколькими докладчиками (в качестве адаптера выбран) не является прямой подгонкой.

+1

Или выражение другого способа, в MVP, представление известно о ведущем устройстве и является активной стороной, которая наблюдает и делегирует события ведущему. В MVA представление не знает об адаптере, но наоборот, а адаптер - активная сторона, которая наблюдает за событиями просмотра. – hidro

Смежные вопросы