Какие знаешь еще архитектурные паттерны помимо MVVM

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

Ответ

MVC (Model-View-Controller)
Классический паттерн, где Controller обрабатывает пользовательский ввод, обновляет Model и управляет View. В Android Activity/Fragment часто выступает как Controller и View, что приводит к раздуванию кода.

MVP (Model-View-Presenter)
Активно использовался до MVVM. Presenter выступает посредником между View и Model, уменьшая связность. View пассивна и обновляется через интерфейсы.

MVI (Model-View-Intent)
Основан на реактивном подходе. Intent — намерение пользователя, State — неизменяемое состояние UI. Пример с Kotlin Flow:

sealed class State { ... }
sealed class Intent { ... }

viewModelScope.launch { intents.collect { processIntent(it) } }

Clean Architecture
Не паттерн, а подход с разделением на слои (Data, Domain, Presentation). Используется вместе с MVVM/MVI.

VIPER (View-Interactor-Presenter-Entity-Router)
Для сложных iOS-приложений, редко в Android. Разделяет логику на мелкие компоненты.

Выбор зависит от сложности проекта и команды. MVVM/MVI популярны в Android из-за поддержки Jetpack.