Istnieje wiele odpowiedzi na to pytanie, ale czułem, że potrzebna jest naprawdę prosta odpowiedź, wyraźnie porównująca oba. Oto dyskusja, którą przygotowałem, gdy użytkownik szuka nazwy filmu w aplikacjach MVP i MVC:
Użytkownik: Kliknij, kliknij…
Zobacz : Kto to jest? [ MVP | MVC ]
Użytkownik: Właśnie kliknąłem przycisk wyszukiwania…
Widok : Ok, poczekaj chwilę… [ MVP | MVC ]
( Zobacz dzwonienie do Prezentera | Kontrolera …) [ MVP | MVC ]
Zobacz : Hej Prezenter | Kontrolerze , użytkownik właśnie kliknął przycisk wyszukiwania, co mam zrobić? [ MVP | MVC ]
Prezenter | Kontroler : Hey Zobacz , czy jest jakiś termin wyszukiwania na tej stronie? [ MVP | MVC ]
Widok : Tak,… tutaj jest… „fortepian” [ MVP | MVC ]
Prezenter : Dzięki Widok ,… tymczasem szukam wyszukiwanego hasła w Modelu , pokaż mu pasek postępu [ MVP | MVC ]
( Prezenter | Kontroler dzwoni do modelu …) [ MVP | MVC ]
Prezenter | Kontroler : Hej, model , czy pasujesz do tego wyszukiwanego hasła ?: „piano” [ MVP | MVC ]
Model : Hej Prezenter | Kontroler , pozwól mi sprawdzić… [ MVP | MVC ]
( Model wykonuje zapytanie do bazy danych filmów…) [ MVP | MVC ]
( Po chwili ... )
-------------- Tutaj MVP i MVC zaczynają się rozchodzić ---------------
Model : Znalazłem dla ciebie listę, Prezenter , oto JSON „[{” name ”:„ Piano Teacher ”,„ year ”: 2001}, {„ name ”:„ Piano ”,„ year ”: 1993} ] ”[ MVP ]
Model : Dostępne są wyniki, Kontroler . Utworzyłem zmienną pola w moim wystąpieniu i wypełniłem ją wynikiem. Nazywa się „searchResultsList” [ MVC ]
( Prezenter | Kontroler dziękuje Modelowi i wraca do Widoku ) [ MVP | MVC ]
Prowadzący : Dziękujemy za czekanie. Zobacz , znalazłem listę pasujących wyników dla Ciebie i uporządkowałem je w możliwym do przedstawienia formacie: [„Piano Teacher 2001”, „Piano 1993”]. Pokaż to użytkownikowi na liście pionowej. Teraz też ukryj pasek postępu [ MVP ]
Kontroler : Dzięki za czekał View , poprosiłem model o zapytaniu. Mówi, że znalazł listę pasujących wyników i zapisał je w zmiennej o nazwie „searchResultsList” wewnątrz swojej instancji. Możesz go zdobyć stamtąd. Teraz też ukryj pasek postępu [ MVC ]
Zobacz : Bardzo dziękuję Prezenterowi [ MVP ]
Widok : Dziękuję „Kontrolerowi” [ MVC ] (Teraz widok sam siebie zadaje pytanie: w jaki sposób mam przedstawić użytkownikowi wyniki uzyskane z modelu ? Czy rok produkcji filmu powinien być pierwszy czy ostatni…? być na liście pionowej lub poziomej? ...)
Jeśli jesteś zainteresowany, piszę serię artykułów dotyczących wzorców architektonicznych aplikacji (MVC, MVP, MVVP, czystej architektury, ...) wraz z repozytorium Github tutaj . Mimo że próbka została napisana dla Androida, podstawowe zasady można zastosować do dowolnego medium.