Ответ
MVVM (Model-View-ViewModel) — основной паттерн, использую LiveData/Flow для связи между ViewModel и View. ViewModel хранит состояние UI и бизнес-логику.
MVI (Model-View-Intent) — односторонний поток данных. Состояние UI immutable, все изменения через Intent → Model → View. Пример с Kotlin Flow:
sealed class State { ... }
sealed class Intent { ... }
viewModelScope.launch {
intents.collect { intent ->
when(intent) {
is Intent.LoadData -> _state.emit(State.Loading)
...
}
}
}
MVP (Model-View-Presenter) — устаревший, но встречается в legacy. Presenter знает о View через интерфейс, что усложняет тестирование.
Clean Architecture + MVVM — комбинирую с UseCase и Repositories для разделения ответственностей. ViewModel делегирует работу UseCase.