Есть много ответов на этот вопрос, но я чувствовал, что нужен какой-то действительно простой ответ, четко сопоставляющий эти два вопроса. Вот обсуждение, которое я придумал, когда пользователь ищет название фильма в приложении MVP и MVC:
Пользователь: Нажмите, нажмите ...
Вид : Кто это? [ MVP | MVC ]
Пользователь: Я только что нажал на кнопку поиска ...
Вид : Хорошо, подожди секунду ... [ MVP | MVC ]
( Просмотр вызова ведущего | контроллера ...) [ MVP | MVC ]
Вид : Эй, Ведущий | Контроллер , Пользователь только что нажал на кнопку поиска, что мне делать? [ MVP | MVC ]
Ведущий | Контролер : Эй, вид , есть ли поисковый запрос на этой странице? [ MVP | MVC ]
Вид : Да, вот оно… «пианино» [ MVP | MVC ]
Докладчик : Спасибо, View ... пока я ищу поисковый запрос по модели , пожалуйста, покажите ему / ей индикатор выполнения [ MVP | MVC ]
( Ведущий | Контроллер вызывает модель …) [ MVP | MVC ]
Ведущий | Контроллер : Эй, модель , у тебя есть совпадение по этому поисковому запросу: «фортепиано» [ MVP | MVC ]
Модель : Эй, ведущий | Контроллер , дай мне проверить… [ MVP | MVC ]
( Модель делает запрос к базе данных фильма…) [ MVP | MVC ]
( Спустя некоторое время ... )
-------------- Здесь MVP и MVC начинают расходиться ---------------
Модель : Я нашел для вас список, ведущий , вот он в формате JSON «[{" name ":" Piano Teacher "," year ": 2001}, {" name ":" Piano "," year ": 1993} ] »[ MVP ]
Модель : есть некоторый результат, контроллер . Я создал переменную поля в моем экземпляре и заполнил ее результатом. Это имя "searchResultsList" [ MVC ]
( Ведущий | Контроллер благодарит Модель и возвращается к Представлению ) [ MVP | MVC ]
Ведущий : Спасибо за ожидание View , я нашел для вас список подходящих результатов и расположил их в презентабельном формате: ["Piano Teacher 2001", "Piano 1993"]. Пожалуйста, покажите это пользователю в вертикальном списке. Также, пожалуйста, скройте индикатор прогресса сейчас [ MVP ]
Контроллер : Спасибо за ожидание, View , я спросил модель о вашем поисковом запросе. Он говорит, что нашел список совпадающих результатов и сохранил их в переменной с именем "searchResultsList" внутри своего экземпляра. Вы можете получить это оттуда. Также, пожалуйста, скройте индикатор прогресса сейчас [ MVC ]
Просмотр : Большое спасибо Ведущий [ MVP ]
Вид : Спасибо «Controller» [ MVC ] (Теперь View спрашивает себя: Как я должен представить результаты , которые я получаю от модели ? Чтобы пользователь должен год производства фильма пришел первый или последний ... Должен ли это? быть в вертикальном или горизонтальном списке? ...)
В случае , если вы заинтересованы, я пишу серию статей , посвященных приложения архитектурных паттернов (MVC, MVP, MVVP, чистая архитектуру, ...) сопровождается Github репо здесь . Несмотря на то, что образец написан для Android, основные принципы могут быть применены к любому носителю.