С какими работал MV паттернами кроме MVVM

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

Ответ

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

  • MVP (Model-View-Presenter) – более четкое разделение: View (Activity/Fragment) отвечает за UI, Presenter – за логику, Model – за данные. Пример:

class MainPresenter(private val view: MainView) {
    fun loadData() {
        val data = Model.getData()
        view.showData(data)
    }
}
  • MVI (Model-View-Intent) – односторонний поток данных. View отправляет Intent (действия), Model обрабатывает и возвращает State, View отображает его. Используется с Kotlin Flow/RxJava.

  • Clean Architecture – не строго MV*, но часто комбинируется с MVP/MVVM. Разделение на слои (Domain, Data, Presentation) для улучшения тестируемости и поддержки.