В чем разница между контроллером в шаблоне MVC и презентатором в шаблоне MVP? - PullRequest
13 голосов
/ 19 января 2011

В чем разница между контроллером в шаблоне MVC и презентатором в шаблоне MVP?Можете ли вы предоставить ссылки для понимания преимуществ и сценария использования для них обоих?

Ответы [ 2 ]

11 голосов
/ 19 января 2011

В MVP докладчик принимает на себя функции «посредника» (исполняемого контроллером приложений в MVC). Кроме того, представление отвечает за обработку событий пользовательского интерфейса (таких как mouseDown, keyDown и т. Д.), Которые раньше были работой контроллера. В конце концов, модель становится строго доменной моделью.

Говорит Википедия .

Вот более подробное объяснение различий между этими двумя .

См. Также примечание об отставке Мартина Фаулера для Presenter Model Viewer .

7 голосов
/ 22 мая 2012

В MVC представление обновляется только моделью (при прослушивании его событий).Он никогда не обновляется контроллером.Это проблематично, когда вам нужно отформатировать данные модели для представления, следовательно, требуется MVP.

В MVP-пассивном представлении представление обновляется только докладчиком (докладчик устанавливает свойства представления).Презентатор прослушивает события в модели [при необходимости изменяя данные] перед обновлением представления.

В MVP-Supervising Controller представление обновляется либо моделью, либо презентатором.Если форматирование не требуется, представление обновляется через модель.Если форматирование требуется, оно обновляется через докладчика.

...