Ответ
MVVM предлагает более декларативный подход через Data Binding и LiveData/Flow, что уменьшает boilerplate-код. В отличие от MVP, где Presenter активно управляет View, MVVM автоматически обновляет UI при изменении данных, снижая связность.
Пример с LiveData:
class MyViewModel : ViewModel() {
private val _data = MutableLiveData<String>()
val data: LiveData<String> = _data
fun fetchData() {
_data.value = "Updated"
}
}
// В Activity/Fragment:
viewModel.data.observe(this) { text ->
textView.text = text
}
Плюсы MVVM:
- Лучшая поддержка Jetpack (ViewModel, LiveData, Room).
- Проще тестирование (ViewModel не зависит от Android-контекста).
- Удобнее для реактивного программирования (Coroutines/Flow).
MVP же требует ручного обновления View и чаще приводит к утечкам памяти из-за сильных ссылок на Activity/Fragment.