Какие знаешь компоненты в MVI

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

Ответ

MVI (Model-View-Intent) состоит из трех ключевых компонентов:

  1. Model – состояние экрана (immutable data class).
    data class MainState(val isLoading: Boolean, val data: List<Item>)  
  1. View – UI (Activity/Fragment), отображающее состояние и отправляющее интенты.

  2. Intent – намерения пользователя (действия: клики, загрузка данных и т.д.).

    sealed class MainIntent {  
        object LoadData : MainIntent()  
        data class ItemClick(val id: Int) : MainIntent()  
    }  

Дополнительно:

  • Reducer – чистая функция, создающая новое состояние на основе предыдущего и результата обработки интента.
  • Middleware/Side Effects – обработка побочных эффектов (навигация, аналитика).

Пример цикла:
Пользователь кликает → View отправляет Intent → Обработка в VM → Обновление Model → View рендерит новое состояние.