Pola Repository
Pisahkan akses data dari antarmuka pengguna dengan pola Repository. Koordinasikan basis data Room dan API jaringan sebagai satu-satunya sumber kebenaran.
Pola Repository adalah pelajaran Android Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 6. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Android Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Android Academy mencakup 6 pelajaran total.
Mengapa Repositori?
Seiring aplikasi Anda berkembang, ViewModel dapat dipenuhi kode akses data (kueri Room, panggilan Retrofit, pembacaan SharedPreferences).
Pola Repositori memindahkan seluruh akses data ke balik satu kelas. ViewModel hanya berkomunikasi dengan Repositori—ViewModel tidak perlu mengetahui asal datanya.
Lapisan Arsitektur
Arsitektur Android yang direkomendasikan memiliki tiga lapisan:
- Lapisan UI — Activity/Fragment menampilkan data dan mengirimkan peristiwa pengguna
- ViewModel — menyimpan status, memproses peristiwa, dan memanggil Repositori
- Repositori — mengambil data dari Room (lokal) atau Retrofit (jarak jauh), lalu menentukan sumber yang akan digunakan
Repositori Sederhana
Buat kelas Repositori yang membungkus DAO dan API jarak jauh:
class NoteRepository(private val dao: NoteDao) {
// Expose a Flow that emits whenever data changes
val allNotes = dao.getAllNotes()
suspend fun insert(note: Note) {
dao.insert(note)
}
suspend fun delete(note: Note) {
dao.delete(note)
}
suspend fun update(note: Note) {
dao.update(note)
}
}ViewModel Menggunakan Repositori
ViewModel mendapatkan data dari Repositori—bukan langsung dari DAO:
class NoteViewModel(private val repo: NoteRepository) : ViewModel() {
val notes = repo.allNotes // Flow from Repository
fun addNote(title: String, body: String) {
viewModelScope.launch {
repo.insert(Note(title = title, body = body))
}
}
fun deleteNote(note: Note) {
viewModelScope.launch {
repo.delete(note)
}
}
}Strategi Utamakan Tembolok
Pola Repositori yang umum adalah mengutamakan tembolok. Tampilkan data yang disimpan secara lokal segera, lalu perbarui dari jaringan di latar belakang:
- 1. Keluarkan data yang disimpan di Room segera
- 2. Ambil data terbaru dari API
- 3. Simpan ke Room — aliran data diperbarui secara otomatis
Pendekatan ini menghasilkan waktu pemuatan yang cepat, sementara data akan diperbarui hingga menjadi terbaru.
Implementasi Utamakan Tembolok
Perbarui basis data lokal dari jaringan:
class ProductRepository(
private val dao: ProductDao,
private val api: ProductApiService
) {
// Room Flow emits local data immediately
val products = dao.getAllProducts()
// Call this to sync with the server
suspend fun refresh() {
try {
val remoteProducts = api.getProducts()
dao.insertAll(remoteProducts) // overwrites local cache
} catch (e: Exception) {
// Network failed — cached data is still shown
}
}
}ViewModelFactory
Jika ViewModel memiliki parameter konstruktor, Anda memerlukan ViewModelFactory untuk membuatnya:
class NoteViewModelFactory(
private val repo: NoteRepository
) : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
@Suppress("UNCHECKED_CAST")
return NoteViewModel(repo) as T
}
}
// In Activity:
val db = NoteDatabase.getInstance(this)
val repo = NoteRepository(db.noteDao())
val factory = NoteViewModelFactory(repo)
val viewModel = ViewModelProvider(this, factory)[NoteViewModel::class.java]Hilt untuk Injeksi Dependensi
Membuat instans Repositori dan ViewModel secara manual menjadi merepotkan dalam aplikasi besar. Hilt (Injeksi Dependensi) mengotomatiskan proses ini:
- Beri anotasi
@HiltViewModeldan@Injectpada kelas Anda - Hilt membuat dan menyediakan dependensi secara otomatis
- Menghapus kode pembuat yang berulang
Ringkasan Manfaat
Pola Repositori memberikan:
- Kemudahan pengujian — ganti API nyata dengan tiruan untuk pengujian unit
- Pemisahan tanggung jawab — ViewModel tidak mengetahui apakah data berasal dari lokal atau jarak jauh
- Satu sumber kebenaran — Room selalu menjadi sumber data; API hanya memperbaruinya
- Fleksibilitas — tambahkan tembolok, paginasi, atau sumber data baru tanpa mengubah ViewModel
Pemeriksaan Singkat
Apa tanggung jawab utama Repositori dalam arsitektur Android?
Ringkasan: Pola Repositori
Sekarang Anda memahami arsitektur Android yang direkomendasikan:
- UI → ViewModel → Repositori → (Room / Retrofit)
- Repositori adalah satu-satunya sumber kebenaran
- Utamakan tembolok: tampilkan data lokal segera, lalu perbarui di latar belakang
- Gunakan ViewModelFactory jika ViewModel memiliki parameter konstruktor
- Hilt mengotomatiskan injeksi dependensi dalam aplikasi yang lebih besar
Kursus terakhir: Jaringan & Penyempurnaan — Retrofit, gambar, dan publikasi.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Pola Repository” gratis?
Ya — teks lengkap “Pola Repository” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Android Academy, upgrade ke CoddyKit PRO. Kursus Android Academy mencakup 6 pelajaran total.
Apa yang akan aku pelajari di “Pola Repository”?
Pisahkan akses data dari antarmuka pengguna dengan pola Repository. Koordinasikan basis data Room dan API jaringan sebagai satu-satunya sumber kebenaran. Kamu berlatih Android Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Android Academy?
Tidak diperlukan pengalaman sebelumnya. Android Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 6.
Berapa lama pelajaran “Pola Repository” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Android Academy ini?
Ya. Setiap pelajaran Android Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- ViewModel & LiveData
- Basis Data Room
- Coroutine & Fungsi Suspend
- Pola Repository
- Komponen Navigasi
- Dependency Injection dengan Hilt