Matawebsite Promo Lebaran 2022

Ayo buat MVVM di Android

date 26 May 2021
date Fathurrahman
date 616
date Mobile App
Ayo buat MVVM di Android

Apa itu MVVM?

Sebagai permulaan, mari pertimbangkan deskripsi klasik dari template ini dan analisis setiap komponennya. Model-View-ViewModel (yaitu MVVM ) adalah template arsitektur aplikasi klien, yang diusulkan oleh John Gossman sebagai alternatif pola MVC dan MVP saat menggunakan teknologi Data Binding. Konsepnya adalah memisahkan logika presentasi data dari logika bisnis dengan memindahkannya ke kelas tertentu untuk perbedaan yang jelas.

Jadi, apa arti dari ketiga bagian dalam judul?

  • Model adalah logika yang terkait dengan data aplikasi.
  • Dengan kata lain, ini adalah POJO, kelas pemrosesan API, database, dan sebagainya.
  • Tampilan sebenarnya adalah tata letak layar, yang menampung semua widget untuk menampilkan informasi.
  • ViewModel adalah objek yang menggambarkan perilaku logika View tergantung pada hasil kerja Model. Anda bisa menyebutnya sebagai model perilaku View . Ini bisa berupa pemformatan teks kaya serta logika kontrol visibilitas komponen atau tampilan kondisi, seperti memuat, kesalahan, layar kosong, dll. Juga, ini menjelaskan perilaku yang dimulai oleh pengguna (input teks, penekanan tombol, gesek) , dll.).

Apa hasilnya bagi kita?

  • Fleksibilitas pengembangan. Pendekatan ini meningkatkan kenyamanan kerja tim, karena sementara satu anggota tim bekerja dengan tata letak dan penataan layar, yang lain, pada saat yang sama, menjelaskan logika akuisisi data dan pemrosesan data;
  • Menguji. Struktur ini menyederhanakan penulisan tes dan proses pembuatan objek tiruan. Selain itu, dalam banyak kasus, ini menghilangkan kebutuhan akan pengujian UI otomatis karena Anda bisa menggabungkan ViewModel itu sendiri dengan pengujian unit;
  • Pemisahan logika. Karena kode diferensiasi yang lebih besar menjadi lebih fleksibel dan mudah didukung, belum lagi keterbacaannya. Setiap modul hanya bertanggung jawab untuk fungsi tertentu.

Karena tidak ada yang sempurna, ada beberapa kekurangan:

  • Pendekatan ini tidak dapat dibenarkan untuk proyek kecil.
  • Jika logika data binding terlalu rumit, proses debug aplikasi akan sedikit lebih sulit.

 

Awalnya, pola ini membutuhkan sedikit modifikasi pada Android. Lebih tepatnya, perlu dilakukan revisi terhadap komponen dan kebiasaan persepsi mereka.

Misalnya, mari pertimbangkan Aktivitas. Ini memiliki file layout (XML) dan kelas Java yang terkait, di mana kami menjelaskan segala sesuatu tentang kerjanya. Apakah ternyata file xml masing-masing adalah View, dan kelas java, ViewModel? Kurang tepat. Bagaimana jika saya mengatakan bahwa kelas kami adalah View juga? Bagaimanapun, tampilan kustom juga memiliki kelas xml dan penangan, tetapi dianggap menyatu. Selain itu, Anda bisa hidup tanpa file xml di aktivitas dan tampilan kustom, sekaligus membuat widget yang diperlukan dalam kode. Dan ternyata dalam arsitektur kita View == Activity (yaitu, XML + kelas Java).

Tapi apa itu ViewModel daripada, dan, yang terpenting, di mana kita harus meletakkannya? Seperti yang bisa kita lihat di salah satu bagian artikel sebelumnya, ini adalah objek yang sepenuhnya terpisah. Dan itu adalah hal yang kami berikan ke file xml menggunakan binding.setViewModel(). Ini akan memiliki kolom dan metode, yang kita perlukan untuk mengikat model dengan View .

Model tidak memiliki perbedaan dengan pemahaman tradisionalnya. Satu-satunya hal yang ingin saya tambahkan dari diri saya sendiri - jangan membuat referensi ke database atau API secara langsung di ViewModel. Sebagai gantinya, buat Repositori untuk setiap VM - sehingga kodenya akan lebih bersih dan tidak terlalu besar.

Dengan cara ini kita mendapatkan yang berikut: aktivitas "melayani" hanya logika yang berhubungan langsung dengan View, tetapi tidak berlaku untuk perilakunya. Kasus tersebut mungkin termasuk penginstalan add-on Toolbar atau TabLayout dan Viewpager. Penting bahwa hanya View yang dapat mengakses widget secara langsung oleh id ( binding.myView.doSomething()), karena VM tidak perlu mengetahui apa pun tentang View - komunikasi di antara widget tersebut hanya diterapkan dengan Binding. Pemuatan data dan logika tampilan ada di ViewModel, dan algoritme untuk memperoleh data yang dijelaskan masing-masing dalam Model.

Matawebsite Promo
fathur.png

Fathurrahman

Android Mobile

Hallo saya trainer Android Mobile di Mataweb dan saya sudah berpengalaman lebih dari 5 tahun. jadi kali ini saya akan share tutorial ataupun tips seputar mobile aplikasi. Salam kenal

Artikel Populer

Halo, ada yang bisa kami bantu?
Daftar Sekarang