Какие знаешь архитектурные паттерны для Presentation слоя

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

Ответ

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

MVP (Model-View-Presenter) – улучшенная версия MVC. View (Activity/Fragment) отвечает только за UI, Presenter – за логику. Пример:

class MainPresenter(private val view: MainView) {
    fun loadData() {
        // Business logic
        view.showData(data)
    }
}

MVVM (Model-View-ViewModel) – использует Data Binding и LiveData/Flow. ViewModel хранит состояние и логику, View подписывается на изменения. Пример:

class MainViewModel : ViewModel() {
    private val _data = MutableLiveData<String>()
    val data: LiveData<String> = _data

    fun loadData() {
        _data.value = "New data"
    }
}

MVI (Model-View-Intent) – однопоточная архитектура с неизменяемым состоянием. Пользовательские действия (Intents) преобразуются в состояния (State). Популярно с Kotlin Flow/StateFlow.

Clean Architecture – разделение на слои (Presentation, Domain, Data) с соблюдением Dependency Rule. Часто комбинируется с MVVM или MVI.