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