Что такое MVVM

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

Ответ

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

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

Преимущества:

  • Четкое разделение ответственности.
  • Упрощает тестирование (ViewModel не зависит от View).
  • Поддержка Data Binding (например, в Android с LiveData или StateFlow).

Пример (Kotlin + ViewModel):

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) { text ->
    textView.text = text
}