С какими паттернами для Presentation слоя работал

«С какими паттернами для Presentation слоя работал» — вопрос из категории Паттерны, который задают на 24% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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.