Ada banyak jawaban untuk pertanyaan itu, tetapi saya merasa ada kebutuhan untuk beberapa jawaban yang sangat sederhana dengan jelas membandingkan keduanya. Inilah diskusi yang saya buat ketika pengguna mencari nama film di aplikasi MVP dan MVC:
Pengguna: Klik klik ...
Lihat : Siapa itu? [ MVP | MVC ]
Pengguna: Saya baru saja mengklik tombol pencarian ...
Lihat : Oke, tunggu sebentar ... [ MVP | MVC ]
( Lihat memanggil Presenter | Controller ...) [ MVP | MVC ]
Lihat : Hey Presenter | Kontroler , Pengguna baru saja mengklik tombol pencarian, apa yang harus saya lakukan? [ MVP | MVC ]
Presenter | Kontroler : Hai Lihat , apakah ada istilah pencarian di halaman itu? [ MVP | MVC ]
Melihat : Ya, ... ini dia ... "piano" [ MVP | MVC ]
Presenter : Terima kasih View ,… sementara itu saya mencari istilah pencarian pada Model , tolong tunjukkan padanya progress bar [ MVP | MVC ]
( Presenter | Controller memanggil Model ...) [ MVP | MVC ]
Presenter | Controller : Hey Model , Apakah Anda memiliki kecocokan untuk istilah pencarian ini ?: “piano” [ MVP | MVC ]
Model : Hey Presenter | Pengendali , izinkan saya memeriksa ... [ MVP | MVC ]
( Model membuat kueri ke basis data film ...) [ MVP | MVC ]
( Setelah beberapa saat ... )
-------------- Di sinilah MVP dan MVC mulai menyimpang ---------------
Model : Saya menemukan daftar untuk Anda, Presenter , ini dia di JSON “[{" name ":" Piano Teacher "," year ": 2001}, {" name ":" Piano "," year ": 1993} ] ”[ MVP ]
Model : Ada beberapa hasil yang tersedia, Pengendali . Saya telah membuat variabel bidang dalam contoh saya dan mengisinya dengan hasilnya. Namanya adalah "searchResultsList" [ MVC ]
( Presenter | Controller terima kasih Model dan kembali ke View ) [ MVP | MVC ]
Presenter : Terima kasih telah menunggu Lihat , saya menemukan daftar hasil yang cocok untuk Anda dan mengaturnya dalam format yang rapi: ["Piano Teacher 2001", "Piano 1993"]. Tolong tunjukkan kepada pengguna dalam daftar vertikal. Juga tolong sembunyikan bilah progres sekarang [ MVP ]
Pengendali : Terima kasih telah menunggu Lihat , saya telah bertanya Model tentang permintaan pencarian Anda. Ia mengatakan telah menemukan daftar hasil yang cocok dan menyimpannya dalam variabel bernama "searchResultsList" di dalam instance-nya. Anda bisa mendapatkannya dari sana. Harap sembunyikan bilah progres sekarang [ MVC ]
Lihat : Terima kasih banyak Presenter [ MVP ]
Lihat : Terima kasih "Kontroler" [ MVC ] (Sekarang Tampilan mempertanyakan dirinya sendiri: Bagaimana saya harus menyajikan hasil yang saya dapatkan dari Model kepada pengguna? Haruskah tahun produksi film datang pertama atau terakhir ...? Haruskah berada dalam daftar vertikal atau horizontal? ...)
Jika Anda tertarik, saya telah menulis serangkaian artikel yang berhubungan dengan pola arsitektur aplikasi (MVC, MVP, MVVP, arsitektur bersih, ...) disertai dengan repo Github di sini . Meskipun sampel ditulis untuk android, prinsip-prinsip yang mendasarinya dapat diterapkan ke media apa pun.