
MVC adalah pendekatan yang bersih di Android yang menjauhkan pandangan dari pengontrol. Pengontrol hanya bertanggung jawab untuk memperbarui model, setelah model diperbarui, ia dapat memberi tahu tampilan dan kemudian tampilan dapat diperbarui menggunakan panggilan balik yang tepat. MVC tradisional adalah tempat ada a
Model : bertindak sebagai model untuk data
Tampilan : Berurusan dengan tampilan kepada pengguna yang bisa menjadi UI
Pengontrol : Mengontrol interaksi antara model dan tampilan, di mana tampilan memanggil pengontrol untuk memperbarui model. Tampilan dapat menghubungi beberapa pengontrol jika diperlukan ..
Beberapa kelemahan MVC dapat diatasi dengan menggunakan pendekatan MVP. Presenter di MVP berisi semua logika bisnis dan kelas ini jauh dari konteks Android atau dependensi terkait Android yang memberikan fleksibilitas untuk teks logika bisnis dengan hanya menggunakan kelas presenter dalam modul uji. Ketergantungan terkait Android menciptakan kompleksitas dalam pengujian. Presenter tidak memiliki ketergantungan android seperti konteks, tampilan dll dan semua pembaruan model dan permintaan jaringan dilakukan melalui presenter. Setelah model diperbarui atau permintaan jaringan selesai, tampilan diperbarui melalui presenter menggunakan callback untuk dilihat dari presenter. Tidak ada model dan permintaan jaringan yang dapat secara langsung mendekati tampilan.
MVVM melibatkan pendekatan pengikatan data untuk membuat kode pendek dan mengurangi kode penanganan tampilan dari kelas Java. View Model bertanggung jawab untuk memperbarui tampilan dan setelah model tampilan terikat pada tampilan, maka tampilan dapat diberitahu tentang acara pembaruan mereka. Jika suatu model diperbarui oleh klik pengguna maka model Kirim panggilan balik untuk melihat model yang memperbarui tampilan secara otomatis karena diikat ke tampilan. MVVM mengurangi ukuran kode tetapi implementasi MVVM cukup sulit dan sulit untuk men -debug proyek besar berdasarkan MVVM.


?
Pilihan arsitektur yang benar untuk proyek melibatkan pemahaman modul yang perlu dikembangkan. Beberapa fungsi bekerja dengan baik pada MVC, beberapa dengan MVP dan beberapa dengan MVVM. Cukup sulit untuk men -debug proyek yang dibuat pada MVVM khususnya yang tidak memiliki aliran data satu sisi karena pengikatan data dan data langsung. Jika suatu aplikasi menerima aliran data yang berkelanjutan dari sumber, membutuhkan UI-pembaruan reguler dan memiliki sebagian besar (80-90%) komunikasi satu sisi (misalnya: perangkat elektronik yang mengirim log ke aplikasi Android) seperti aplikasi sel surya, aplikasi inverter, atau pemantauan status perangkat lain dapat bekerja dengan baik dengan MVVM karena data live -UI UI. Debugging aplikasi MVVM ini bisa mudah karena aliran data utama adalah satu sisi .
MVP adalah pendekatan yang baik untuk menulis proyek Android ketika kami khawatir tentang pengujian pengujian unit WRT Business Logic melalui Java Test Frameworks (bukan Android). Karena Java Test Framework hanya akan menyelesaikan dependensi Java dan lapisan presenter yang bersih bebas dari dependensi terkait Android seperti konteks, preferensi berbagi, atau com.android lainnya. * kemasan. Kelemahan MVP adalah bahwa ia akhirnya menulis kode tambahan 20-25% dengan fungsionalitas yang sama yang ditulis dalam MVC atau MVVM. MVP bagus jika Anda benar -benar tertarik pada kasus uji dan pengujian unit modul. Untuk MVP menggunakan kit tes java hanya membuat instance dari presenter dan menjalankan fungsi tes.
misalnya: presenter baru (). TestSomefunction () .
MVC adalah teknik yang banyak digunakan di Android. Google sendiri menulis repositori di MVC selama bertahun -tahun. Sekarang hari Google mengadopsi MVVM untuk repositori GitHub karena repo ini adalah sampel kecil dan sebagian besar. Aplikasi MVC dapat diuji melalui kerangka uji Android bukan dengan alat uji spesifik Java karena kurangnya dependensi com.android. * Paket dalam alat spesifik Java.
Contoh :
Catatan : Tidak ada arsitektur tunggal yang terbaik dari semuanya. Jika ada, tidak akan ada kebutuhan untuk mempelajari arsitektur lain. Pilihan arsitektur yang benar tergantung pada beberapa faktor seperti persyaratan awal, aliran data, skalabilitas, pemeliharaan, pembaruan (CRS), persyaratan pengujian.
Kecuali ketiga arsitektur Android ini, ada satu arsitektur lagi yang disebut sebagai "MVI - Model View Intent". Ini tidak terlalu populer di kalangan pengembang Android. Silakan periksa tautan ini jika Anda tertarik dengan MVI .
https://github.com/saksham24/android-simple-mvi-pattern-with-mvp-mvvm-collaboration