Saya telah membaca selama tiga hari tentang pola Model-View-Controller (MVC) dan Model-View-Presenter (MVP) . Dan ada satu pertanyaan yang sangat mengganggu saya. Mengapa perancang perangkat lunak menciptakan MVP, padahal sudah ada MVC?
Masalah apa yang mereka hadapi, yang MVC tidak pecahkan (atau pecahkan dengan buruk), tetapi MVP bisa pecahkan? Masalah apa yang ingin diselesaikan oleh MVP?
Saya telah membaca banyak artikel tentang sejarah dan penjelasan MVP, atau tentang perbedaan antara MVC dan MVP, tetapi tidak ada yang memiliki jawaban yang jelas untuk pertanyaan saya.
Di salah satu artikel yang saya baca, dikatakan:
Sekarang ke Model View Presenter, yang merupakan respons terhadap kekurangan pola MVC ketika diterapkan pada antarmuka pengguna grafis berbasis komponen modern. Dalam sistem GUI modern, komponen GUI sendiri menangani input pengguna seperti gerakan mouse dan klik, daripada beberapa pengontrol pusat.
Jadi, saya tidak bisa mengerti, tetapi bisakah sebenarnya dengan cara lain, sehingga komponen GUI tidak menangani input pengguna sendiri? Dan apa sebenarnya artinya "menangani sendiri"?
sumber
Jawaban:
MVC secara konseptual elegan:
Namun: Aliran data dan peristiwa di MVC berbentuk lingkaran. Dan tampilan akan sering mengandung logika yang signifikan (seperti penangan kejadian untuk tindakan pengguna). Bersama-sama, sifat-sifat ini membuat sistem sulit untuk diuji dan sulit untuk dipelihara.
Arsitektur MVP menggantikan controller dengan presenter, yang memediasi antara tampilan dan model. Ini linierkan sistem:
Ini memiliki keuntungan sebagai berikut:
Logika (seperti penangan kejadian dan status antarmuka pengguna) dapat dipindahkan dari tampilan ke presenter.
Antarmuka pengguna dapat diuji unit dalam hal presenter, karena menggambarkan kondisi antarmuka pengguna. Di dalam unit test, kami mengganti tampilan dengan driver tes yang melakukan panggilan ke presenter.
Karena antarmuka pengguna terisolasi dari logika aplikasi, keduanya dapat dikembangkan secara mandiri.
Tetapi ada juga beberapa kelemahan dari pendekatan ini:
sumber
Dalam MVP, Presenter menggantikan Controller MVC. Perbedaan antara keduanya adalah bahwa Presenter secara langsung memanipulasi Tampilan. Ini dirancang untuk kerangka kerja UI yang terutama didorong oleh peristiwa (seperti Windows Forms) tanpa dukungan berat untuk pengikatan data yang kaya yang akan mendukung pola MVVM (seperti WPF). Kalau tidak, banyak logika untuk mengelola kondisi tampilan dan memperbarui model dukungan akan terletak pada tampilan itu sendiri.
sumber