Anda di halaman 1dari 34

Konsep MVVM

Model View ViewModel


adalah sebuah pola arsitektur yang
memisahkan antara user interface logic dari
business logic. Tujuan penggunaan MVVM
sendiri adalah menjaga kode UI agar tetap
sederhana dan tanpa mengandung app logic
agar mudah untuk dikelola.
• Model
Model adalah representasi dari data dan business logic dari aplikasi.
Salah satu dari strategi implementasi model adalah membuat model
dapat terbuka melalui observables agar terpisah antara ViewModel
atau observer/ consumer.
• ViewModel
ViewModel berinteraksi dengan model dan juga menyiapkan
observables yang akan diobservasi oleh View. ViewModel dapat
menyediakan hooks untuk view dan mem-pass events kepada model.
Salah satu implementasi strategi dari ViewModel adalah untuk
memisahkannya dengan View. Contohnya ViewModel tidak
seharusnya mengetahui View berinteraksi dengan siapa
• View
Tugas dari view pada MVVM adalah untuk observe sebuah
ViewModel observable untuk mendapatkan data yang akan
mengupdate UI/ tampilan.
• Model
• Model / entity adalah representasi dari data yang digunakan
pada business logic, dapat berupa Plain Old Java Object (POJO), Kotlin
Data Classes, dll.
• View
• Representasi UI dari sebuah aplikasi, pada Android sendiri view ini
dapat berupa Activity atau Fragment.
• ViewModel
• Layer yang berinteraksi langsung dengan Model, serta menyajikan
data untuk View layer.
Kesimpulan Tujuan view model
• Adalah sebuah class yang di gunakan utk
memenage UI dan data yang berhubungan
dengan UI
• Agar data itu dapat di maksimalkan
penggunaanya, jika dalam kondisi tertentu
terjadi rotasi layar tapi data tetap di pertahankan
mvvm diagram android Dari Google
Retrofit
Resource yang berbentuk format JSON yang disediakan REST
server dapat dimanfaatkan oleh aplikasi android dengan
library Retrofit.
Retrofit adalah library Rest Client untuk android dan java dari
squareup. hal ini membuatnya relatif mudah untuk
mengambil dan mengunggah JSON (atau struktur data lainnya)
melalui webservice berbasis REST. Di Retrofit Anda
mengonfigurasi konverter mana yang digunakan untuk
serialisasi data. Biasanya untuk JSON menggunakan GSon,
tetapi Anda dapat menambahkan konverter khusus untuk
memproses XML atau protokol lain.
• Retrofit dapat dikonfigurasi untuk menggunakan converter. Converter
ini menangani de(serialization) data. Beberapa converter sudah
tersedia untuk berbagai format serialisasinya.
• secara default, Retrofit hanya dapat melakukan deserialize badan
HTTP ke dalam tipe ResponseBody OkHttp dan hanya dapat
menerima tipe RequestBody untuk @Body.
Tambahkan library ini di build.gradle
Penggunaan Live Data dan Mutable Live Data
Kedua class tersebut memiliki tujuan yang sama
yaitu class observable yang mana class tersebut
berfungsi untuk mengamati perubahan value
pada class lain
Perbedaan nya
• adalah Live Data bersifat Immutable yang mana value
nya itu bersifat constant atau value tersebut tidak
dapat diubah, serta Mutable Live Data bersifat
Mutable yang memungkinkan valuenya itu bisa
diubah.
• Mutable Live data digunakan didalam ViewModel
bertujuan untuk mengantisipasi perubahan logika dari
Repository, artinya Mutable Live Data ini mengamati
perubahan value dari class repository secara dinamis

Mutable Live data dan Live data


• Jadi kesimpulannya
memiliki fungsi yang sama yaitu class yang bertugas
untuk melakukan Observable atau mengamati
perubahan value pada class lain. Bedanya Mutable
Live data bersifat dinamis yang valuenya dapat
berubah serta Live data bersifat statis yang valuenya
tidak bisa berubah
ViewModelProvider

adalah kelas helper yang membungkus


beberapa fungsi/method untuk life-cycle
viewmodel. Salah satunya adalah fungsi
viewModel.onCleared()
life-cycle viewmodel
Dependency Injection
• adalah suatu teknik untuk mengurangi ketergantungan
(interdependency) dari suatu sistem, untuk meminimalisir suatu class
agar tidak terikat dengan class lain

• Dependency Injection berfungsi untuk mengatur cara suatu objek


dibentuk ketika ada objek lain membutuhkannya.
• Ada tiga komponen utama yang di gunakan pada Dependency
Injection, yaitu :
• Injector, merupakan komponen yang mengatur pembuatan instance
(salinan) dari Service dan melakukan injeksi ke Client.
• Service, merupakan suatu Objek atau komponen yang melakukan
tugas tertentu, dan dapat di gunakan oleh Client.
• Client, merupakan suatu Objek atau komponen yang memiliki
ketergantungan terhadap objek Service dalam mengerjakan tugasnya.
Untuk menggunakan DI kita bisa pakai koin
Tambahkan di build.gradle anda
Buat Struktur package sebagai berikut
Buat Package
Buat file baru di Repository beri nama
AppRepository
Buat Class baru di local beri nama
LocalDataSource
Buat class baru di remote
Script AppRepositoty
Untuk menghubungkan antara repository
dengan localDatasource dan RemoteDataSource
Tambahkan packae Network di remote
Isi network dengan ApiConfig dan ApiService

Untuk Script ApiConfig dan Apiservice anda copykan saja


Tambahkan file AppModule di DI
Tambahkan 3 buah file di DI

Anda mungkin juga menyukai