Halo teman-teman kali ini kita akan membahasa mengenai salah satu arsitektur yang biasa digunakan dalam pembuatan aplikasi android yaitu Model-View-View Model (MVVM). Dengan menggunakan arsitektur ini maka projek aplikasi yang kita bangun akan terstruktur, efisien, dan mudah dikembangkan.
Arsitektur MVVM membantu memisahkan tampilan (UI), logika bisnis, dan data, sehingga kode menjadi lebih bersih, mudah diuji, dan lebih mudah dikelola dalam jangka panjang.
Apa Itu MVVM?
MVVM merupakan singkatan dari Model–View–ViewModel, sebuah pola arsitektur yang memisahkan kode aplikasi menjadi tiga bagian utama:
- Model → Mengelola data dan logika bisnis.
- View → Menangani tampilan antarmuka pengguna (UI).
- ViewModel → Menjadi penghubung antara View dan Model.
Dengan pemisahan ini, setiap bagian memiliki tanggung jawab yang jelas, membuat pengembangan lebih terorganisir dan mudah dikembangkan oleh tim.
Struktur Folder MVVM dalam Android Kotlin
Berikut contoh struktur folder umum dalam penerapan MVVM di Android Studio:
app/
├── data/
│ ├── model/
│ │ └── User.kt
│ ├── repository/
│ │ └── UserRepository.kt
│ └── network/
│ └── ApiService.kt
├── ui/
│ └── user/
│ ├── UserActivity.kt ← View
│ ├── UserViewModel.kt ← ViewModel
│ └── UserAdapter.kt
└── utils/
└── Resource.kt
Dari struktur folder atau file yang di atas memudahkan pengelolaan kode, karena logika data, tampilan, dan penghubungnya dipisahkan dengan rapi.
Penjelasan Komponen MVVM
1. Model
Model berfungsi sebagai pengelola data baik sumber data tersebut dari API, database lokal, atau sumber lainnya.
Contohnya:
data class User(
val id: Int,
val name: String,
val email: String
)2. Repository
Repository ini digunakan sebagai jembatan antara ViewModel dan sumber data (API, database, dsb)
Contohnya:
class UserRepository {
fun getUser(): User {
return User(1, "Faisal Mahadi", "[email protected]")
}
}3. ViewModel
ViewModel ini bertugas mengatur data yang akan ditampilkan pada UI, sekaligus menyimpan state agar data tetap bertahan waktu walau terjadi perubahan konfigurasi.
Contohya:
class UserViewModel : ViewModel() {
private val repository = UserRepository()
private val _user = MutableLiveData<User>()
val user: LiveData<User> = _user
fun loadUser() {
_user.value = repository.getUser()
}
}4. View (Activity/ Fragment)
View ini bertugas untuk menampilkan data ke pengguna dan mengamati perubahan dari ViewModel menggunakan LiveData.
Contohnya:
class UserActivity : AppCompatActivity() {
private lateinit var viewModel: UserViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_user)
viewModel = ViewModelProvider(this)[UserViewModel::class.java]
viewModel.user.observe(this) { user ->
findViewById<TextView>(R.id.textViewName).text = user.name
findViewById<TextView>(R.id.textViewEmail).text = user.email
}
viewModel.loadUser()
}
}Tools dan Library untuk sebagai pendukung MVVM
MVVM pada umumnya digunakan bersamaan dengan Android Jetpack dan library modern lainnya. Berikut beberapa di antaranya:
| Komponen | Fungsi |
|---|---|
| ViewModel | Menyimpan dan mengelola data UI secara lifecycle-aware. |
| LiveData | Mengamati perubahan data secara otomatis. |
| Room | ORM untuk database SQLite. |
| Retrofit | Library populer untuk komunikasi API. |
| Hilt / Koin | Dependency injection untuk pengelolaan objek. |
| Coroutines / Flow | Mengelola proses asinkron dengan efisien. |
Kelebihan atau keunggulan Arsitektur MVVM
| Keunggulan | Penjelasan |
|---|---|
| Pemisahan Tanggung Jawab | Memisahkan logika bisnis, data, dan tampilan dengan jelas. |
| Mudah Diuji | ViewModel dan Repository dapat diuji tanpa bergantung pada UI. |
| Reusable | Komponen dapat digunakan kembali di berbagai tampilan. |
| Reactive | UI otomatis memperbarui data melalui LiveData atau Flow. |
| Mudah Dipelihara | Struktur rapi dan modular memudahkan pengembangan tim. |
Kesimpulan
Penerapan arsitektur MVVM pada Kotlin Android membuat aplikasi lebih mudah dikembangkan, diuji, dan dipelihara.
Dengan membagi kode menjadi Model, View, dan ViewModel, pengembang dapat menjaga agar aplikasi tetap bersih, efisien, dan scalable.
Jika kita baru mempelajari arsitektur Android, MVVM merupakan pondasi terbaik untuk memulai, karena didukung langsung oleh Android Jetpack dan sangat cocok untuk aplikasi modern berbasis Kotlin.





