Какие плюсы и минусы MVVM

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

Ответ

Плюсы:

  • Четкое разделение ответственности (UI, бизнес-логика, данные)
  • Легче тестировать (ViewModel не зависит от View)
  • Поддержка Android Architecture Components (LiveData, ViewModel)
  • Автоматическая привязка данных (Data Binding)

Минусы:

  • Больше boilerplate-кода (особенно без Data Binding)
  • Сложность при работе с одноразовыми событиями (например, навигация)
  • ViewModel может разрастаться (нужно дробить на UseCase/Interactor)

Пример с LiveData:

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

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