Відповідей на це питання багато, але я відчув, що потрібна справді проста відповідь, чітко порівнюючи обидві. Ось дискусія, яку я підготував, коли користувач шукає ім’я фільму в додатках MVP та MVC:
Користувач: натисніть кнопку ...
Вид : Хто це? [ МВП | MVC ]
Користувач: Я просто натиснув кнопку пошуку ...
Перегляд : Гаразд, зачекай на секунду…. [ МВП | MVC ]
( Переглянути виклик презентатора | Контролер ...) [ MVP |MVC ]
Вид : Ей, ведучий | Контролер , Користувач щойно натиснув на кнопку пошуку, що робити? [ МВП |MVC ]
Ведучий | Контролер : Гей Подивитися , чи є термін пошуку на цій сторінці? [ МВП | MVC ]
Вид : Так,… ось воно… “фортепіано” [ MVP | MVC ]
Ведучий : Дякую Перегляд ,… тим часом я шукаю пошуковий термін на Моделі , покажіть його, будь ласка, панель прогресу [ MVP | MVC ]
( Ведучий | Контролер викликає модель …) [ MVP | MVC ]
Ведучий | Контролер : Ей, модель , чи є у вас відповідність для цього пошукового терміна ?: "фортепіано" [ MVP | MVC ]
Модель : Hey Presenter | Контролер , дозвольте мені перевірити… [ MVP |MVC ]
( Модель робить запит до бази даних фільмів…) [ MVP | MVC ]
( Невдовзі ... )
-------------- Тут MVP і MVC починають розходитися ---------------
Модель : Я знайшов список для вас, ведучий , ось він у JSON "[{" ім'я ":" Вчитель фортепіано "," рік ": 2001}, {" ім'я ":" Піаніно "," рік ": 1993} ] ”[ MVP ]
Модель : Є деякий результат, контролер . Я створив змінну поля у своєму екземплярі і заповнив її результатом. Його назва - "searchResultsList" [ MVC ]
( Ведучий | Контролер дякує Моделі та повертається до Перегляду ) [ MVP | MVC ]
Ведучий : Дякую за очікування Перегляду , я знайшов список відповідних результатів для вас і організував їх у презентабельному форматі: ["Вчитель фортепіано 2001", "Фортепіано 1993"]. Покажіть його користувачеві у вертикальному списку. Також, будь ласка, прихойте панель прогресу зараз [ MVP ]
Контролер : Дякуємо, що чекали Перегляд , я поцікавився в моделі щодо вашого пошукового запиту. У ньому йдеться про те, що він знайшов список відповідних результатів і зберігав їх у змінній під назвою "searchResultsList" всередині свого примірника. Ви можете отримати його звідти. Також, будь ласка, прихойте панель прогресу зараз [ MVC ]
Перегляд : Дуже дякую презентатору [ MVP ]
Перегляд : Дякую "Контролер" [ MVC ] (Тепер Погляд ставить перед собою питання: Як я повинен представити користувачеві результати, отримані від Моделі ? Чи повинен рік виробництва фільму прийти першим чи останнім ...? Чи повинен він бути у вертикальному чи горизонтальному списку? ...)
Якщо вам цікаво, я написав низку статей, що стосуються архітектурних моделей додатків (MVC, MVP, MVVP, чиста архітектура, ...), які супроводжують тут репортаж Github . Незважаючи на те, що зразок написаний для андроїда, основні принципи можуть бути застосовані до будь-якого середовища.