MVVM ( Model, View, ViewModel )
Berjumpa lagi dengan saya seorang mahasiswa yang mendalami pemprograman android. Apakah kalian sudah tahu apa itu MVVM dan apa to perbedaannya dengan MVP , mungkin sebagian besar kalian sudah menerapkan design pattern tersebut. yuk kita bahas sama”.
MVVM dengan MVP itu kurang lebih nya hampir sama kok temen”, kita melakukan pengambilan, pemprosesan data pada MVP ya di Presenternya iya kan. Kemudian hasilnya di teruskan ke view atau class Activity / Fragment.Nah begitu juga dengan MVVM, pengambilan data dan pemprosesannya ada di ViewModel, dan hasilnya di observasi secara live ke komponen view di class activity/fragment. Lalu apa yang membedakannya ? yang membedakan ya di state datanya temen”. MVP secara default nggak bisa tuh mempertahankan data ketika livecycle activitynya berakhir ya kan temen”. Beda cerita kalau MVVM, dia dapat mempertahankan datanya namun MVVM yang lebih advance pengambilan data dan penyimpanan data ke database atau diteruskan ke api itu harus melalui Repository.
Menurutku berdasarkan sifatnya Model kan dipakai sebagai penampung data yang didapat. Nah Kalau View Model itu di dalam MVVM ia mendapat bagian untuk memproses data yang di dapatkan dari UI dan di kembalikan lagi ke UI. Sehingga pemprosesan data tidak perlu dilakukan di UI Controller ( Fragment / Activity ). Karena akan menjadikan aplikasi berjalan lambat, serta tidak dapat menjaga state datanya ketika on destroy.
Repository di lihat dari Android Architecture Componen ini sih dia bertugas untuk melakukan proses permintaan data dari internet atau database lokal, setelah itu diteruskan data tersebut ke viewmodel. Kalian mesti sebagian ada yang bertanya tanya kenapa sih harus ada repository kak, padahal permintaan data dari internet / local database bisa tuh ditaruh di viewmodel ? Alasanya nya ya agar source code yang kita buat itu lebih bersih dan rapi teman”. Dengan memecah mecah pekerjaan dari tiap fungsi aplikasi. Ya kali aja pekerjaan minta data itu nggak hanya 1 UI Controller ( Activity / Fragment ) bisa saja kan 10 atau bahkan 15 UI Controller yang di minta kan , kalau diketik di viewmodel semua kan jadinya berulang-ulang dan tidak efektif.
Kemudian View pada MVVM ia mendapat bertugas melakukan observasi terhadap data yang disimpan di ViewModel. Apabila ada perubahan pada data di ViewModel, maka View lah yang bertanggung jawab untuk melakukan update pada UI sesuai dengan data yang baru.
Sekian tutorial singkat dari saya , Semoga bermanfaat…