Perbedaan MVC, MVP dan MVVM |
Disini saya terlebih dahulu menggambarkan secara singkat apa itu MVC, MVP dan MVVM. MVC, MVP dan MVVM merupakan sebuah design atau konsep penulisan sebuah block program pada aplikasi Android (tidak hanya untuk Android), dimana nantinya aplikasi Android tersebut akan mempunyai struktur kode program yang terarah dan mudah untuk dilakukan maintenance atau penambahan fitur dan juga konsep ini akan menentukan performance dari aplikasi Android yang akan kita bangun tentunya.
Oke tanpa basa-basi lagi saya akan menjelaskannya satu-persatu, dimulai dari MVC, MVP dan MVVM.
1. MVC (Model View Controller)
Pola desain MVC membagi aplikasi menjadi tiga aspek utama, yaitu: Model, View, dan Controller. Biasanya, program yang memakai pola MVC ini menggunakan bahasa program PHP.
-Model
Model berarti data yang diperlukan untuk ditampilkan dalam tampilan. Model mewakili kumpulan class yang menggambarkan business logic (model bisnis dan model data). Ini juga mendefinisikan aturan bisnis untuk data yang berarti data dapat diubah dan dimanipulasi.
-View
View mewakili komponen UI seperti XML, HTML, dll. Tampilan menampilkan data yang diterima dari pengontrol sebagai hasilnya. Dalam MVC Pattern, View memantau Model untuk setiap perubahan kondisi dan menampilkan Model yang diperbarui. Model dan View berinteraksi satu sama lain menggunakan pola Observer.
-Controller
Controller bertanggung jawab untuk memproses permintaan yang masuk. Ini memproses data pengguna melalui Model dan meneruskan hasilnya ke View. Biasanya bertindak sebagai mediator antara View dan Model.
Singkatnya gini :
-Model: Model untuk data
-View: Apapun yang berhubungan dengan UI
-Controller: Penghubung / jembatan antara Model dan View.
2. MVP (Model View Presenter)
Berikutnya MVP. Pola MVP mirip dengan pola MVC. Ini berasal dari pola MVC, di mana pengontrol digantikan oleh presenter. Pola ini membagi aplikasi menjadi tiga aspek utama: Model, View, dan Presenter. Untuk Android Developer, kebanyakan menggunakan pola MVP ini.
-Model
Model mewakili sekumpulan kelas yang menggambarkan logika bisnis dan data. Ini juga mendefinisikan aturan bisnis untuk data yang berarti data dapat diubah dan dimanipulasi.
-View
View adalah komponen yang secara langsung berinteraksi dengan pengguna seperti XML, Activity dan Fragment. Itu tidak mengandung logika yang diimplementasikan.
-Presenter
Presenter menerima input dari pengguna melalui View, lalu memproses data pengguna dengan bantuan Model dan meneruskan hasilnya kembali ke View. Presenter berkomunikasi dengan tampilan melalui antarmuka. Antarmuka didefinisikan dalam class presenter. Activity / Fragment atau komponen tampilan lain mengimplementasikan antarmuka ini dan merender data dengan cara yang mereka inginkan.
Dalam pola desain MVP, presenter memanipulasi Model dan juga memperbarui tampilan. Dalam MVP ,View dan Presenter sepenuhnya dipisahkan satu sama lain dan berkomunikasi satu sama lain melalui antarmuka. Karena pengujian unit aplikasi yang memanfaatkan pola desain MVP di atas pola desain MVC jauh lebih mudah.
Manfaat MVP Pattern diantaranya :
- Meringankan kinerja activity / fragment karena tidak adanya proses http request ke server atau mengambil data ke storage.
- Setiap layer memiliki tugasnya masing-masing sehingga lebih test-friendly.
- Mempermudah tugas yang kompleks dgn membagi-baginya menjadi bagian yang sederhana dan lebih mudah.
- Bagus untuk background task. Activity lain bisa akses background task yang sedang dijalankan melalui presenternya.
- Beban kerja dari View lebih ringan karena tidak mengurusi http request atau http response.
- Membagi tugas ke setiap layer sehingga code menjadi TESTABLE.
- Membagi kode-kode yang bejibun menjadi bagian-bagian kecil dan sesederhana mungkin.
- Mempermudah code maintenance.
3. MVVM (Model View ViewModel)
Yang terakhir MVVM. Pola MVVM mendukung pengikatan data dua arah antara View dan View-Model. Ini memungkinkan propagasi otomatis perubahan, di dalam keadaan ViewModel ke View. Secara umum, ViewModel menggunakan pola pengamat untuk menginformasikan perubahan dalam ViewModel ke Model.
-Model
Sama seperti sebelumnya, Model mewakili sekumpulan kelas yang menggambarkan logika bisnis dan data. Ini juga mendefinisikan aturan bisnis untuk data yang berarti data dapat diubah dan dimanipulasi.
-View
View adalah komponen yang secara langsung berinteraksi dengan pengguna seperti XML, Activity dan Fragment. Itu tidak mengandung logika yang diimplementasikan.
-ViewModel
ViewModel bertanggung jawab untuk mengekspos metode, perintah, dan properti lainnya yang membantu mempertahankan keadaan tampilan, memanipulasi Model sebagai hasil dari tindakan pada tampilan, dan memicu peristiwa dalam tampilan itu sendiri. View memiliki referensi ke ViewModel tetapi ViewModel tidak memiliki informasi tentang View. Ada banyak hubungan antara View dan ViewModel berarti banyak View dapat dipetakan ke satu ViewModel. Ini sepenuhnya independen dari Views.
Penjilidan data dua arah atau data dua arah yang mengikat antara tampilan dan ViewModel memastikan bahwa model dan properti di ViewModel selaras dengan tampilan. Pola desain MVVM sangat cocok dalam aplikasi yang membutuhkan dukungan untuk pengikatan data dua arah.
Bagaimana? Sampai disini apa kalian sudah paham? Jika masih ada yang kurang paham, silahkan berikan koemntarnya ya. Intinya MVC, MVP dan MVVM sangat penting didalam dunia pemrograman.
Demikian informasi yang saya bagikan untuk kalian. Jangan lupa bagikan artikel ini ke teman-teman kalian agar ikut membaca Apa Perbedaan MVC, MVP dan MVVM. Subscribe juga blog Rivaldi 48 ini agar kalian mendapatkan notifikasi saat saya update artikel terbaru. Semoga kalian lebih nyaman dan mudah dalam mengakses Blog Rivaldi 48 dimanapun kalian berada. Terima Kasih. Follow Instagram saya @azhardvls_