Какой путь проходит Model в MVI

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

Ответ

В MVI (Model-View-Intent) модель представляет собой единое неизменяемое состояние приложения. Путь модели:

  1. Intent → Пользовательские действия (клики, свайпы) преобразуются в намерения (Intents), которые описывают желаемое изменение состояния.
  2. Processor → Интенты обрабатываются (например, в UseCase или Interactor), где происходит бизнес-логика и генерация нового состояния.
  3. Model Update → На основе предыдущего состояния и результата обработки создаётся новая неизменяемая модель.
  4. View Render → View подписывается на изменения модели и перерисовывает UI.
// Пример состояния
data class MainState(
    val isLoading: Boolean,
    val data: List<Item> = emptyList(),
    val error: Throwable? = null
)

// Редуктор (обновление состояния)
fun reduce(oldState: MainState, event: Event): MainState {
    return when (event) {
        is Event.Loading -> oldState.copy(isLoading = true)
        is Event.Success -> oldState.copy(
            isLoading = false, 
            data = event.data
        )
        // ...
    }
}