Как строится взаимодействие между view и моделью в MVVM

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

Ответ

В MVVM взаимодействие строится через ViewModel, которая выступает посредником между View (активити/фрагмент) и Model (данные, репозиторий).

View подписывается на LiveData/StateFlow из ViewModel и реагирует на изменения данных. View вызывает методы ViewModel для обработки действий пользователя. ViewModel не имеет ссылок на View, что предотвращает утечки памяти.

Пример с LiveData:

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

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

// Activity
viewModel.data.observe(this) { data ->
    textView.text = data
}

button.setOnClickListener {
    viewModel.loadData()
}

Ключевые моменты:

  • ViewModel хранит состояние
  • View подписывается на изменения
  • Двусторонняя привязка через Data Binding (опционально)