MVVM & Repository Pattern Android Development

Hai setelah sekian lama tidak menulis, biasalah fresh grad banyak problematika yang perlu di urus belakangan ini hehe, saya kembali menulis tentang seputar apapun yang ingin saya tulis wkwk
Di sesi tulisan ini saya ingin sedikit membahas android karena title profile saya android engineer tp kok tulisan nya gada tentang android ya wkwk
okee…saya bahas android, kali ini saya akan bahas tentang Repository Pattern pada android development.
Sebelum melanjutkan membaca artikel tentang repository pattern ini kawan-kawan harus baca dulu atau pahami tentang Desain Pattern MVVM, cari sendiri dah ya artikel nya saya males wkwkwk
Lansung saja bos bahas apa mahluk Repository Pattern itu.
Jika sudah paham bagaimana MVVM bekerja, pasti tau kan ada model di desain pattern MVVM? apa masih bingung yaudah deh gambaran besarnya saya kasih tau tentang MVVM.
MVVM adalah singkatan dari Model View ViewModel, nah ada tiga bagian dalam MVVM kan kita bahas satu-satu.
Model
Model dalam MVVM berperan sebagai proses pengolahan data
ViewModel
ViewModel berperan sebagai atau semua penampung logic bussines yang terjadi sebagai komunikasi antara model dengan View.
View
Nah untuk View sendiri berperan sebagai UI seperti Activity, fragment tempat untuk menampilkan data yang di kirim dari ViewModel.
Nah itu sedikit overview tentang MVVM, karena dalam MVVM logic bussines di tampung pada ViewModel, pernah ga sih kepikiran data yang di kirimkan Model itu berasal darimana?
Dengan Repository Pattern kita bisa membedakan data dari API atau data dari Local Database. selain itu juga pernah kepikiran buat fitur Online/Offline? misal ingin membuat suatu aplikasi berita tapi ingin bisa di akses tanpa internet? Nah solusinya Repository pattern ini. Alurnya adalah data di muat dari API terlebih dahulu setelah itu kita cache dalam local Database
Arsitecture Component nya begini kalo MVVM

bisa di lihat gambar diatas repository berperan sebagai jembatan sebelum data di kirimkan ke viewmodel
Apasih keuntungan nya menggunakan Repository Pattern?
- Memisahkan aplikasi dari sumber data.
- Menyediakan data dari berbagai sumber seperti dari API, database lokal atau dari cache, tanpa klien khawatir tentang hal ini.
- Mengisolasi lapisan data.
- Satu kontrol, tersentralisasi, akses yang konsisten kepada data.
- Mudah untuk melakukan testing kepada business logic dengan Unit Test.
- Mudah untuk menambahkan sumber data baru.
Begitu sob agak pusing ya gak sih? sama saya juga pusing wkwkkw
Sekian terimakasih kawan-kawan seperkodingan. See You :)
Reference : Dicoding Class Android Jetpack Pro