Какие знаешь особенности MVVM

«Какие знаешь особенности MVVM» — вопрос из категории Архитектура, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

MVVM (Model-View-ViewModel) — это архитектурный паттерн, который разделяет логику приложения на три компонента:

  1. Model — содержит бизнес-логику и данные.
  2. View — отображает UI и передает пользовательские действия во ViewModel.
  3. ViewModel — промежуточный слой, преобразующий данные Model для View и управляющий состоянием UI.

Особенности:

  • Data Binding — уменьшает boilerplate-код, связывая View и ViewModel через Observable поля.
  • Lifecycle-aware — ViewModel сохраняется при повороте экрана, избегая утечек памяти.
  • Разделение ответственности — UI логика отделена от бизнес-логики, что упрощает тестирование.

Пример с LiveData:

class MyViewModel : ViewModel() {
    private val _data = MutableLiveData<String>()
    val data: LiveData<String> = _data

    fun loadData() {
        _data.value = "Hello MVVM!"
    }
}

// Во View (Activity/Fragment):
viewModel.data.observe(this) { value ->
    textView.text = value
}