Какие знаешь паттерны архитектуры разработки в Android

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

Ответ

В Android популярны несколько архитектурных паттернов:

  1. MVP (Model-View-Presenter)

    • View пассивна, Presenter обрабатывает логику.
    • Пример:
    class MainPresenter(private val view: MainView) {
        fun loadData() {
            val data = Repository.getData()
            view.showData(data)
        }
    }
  1. MVVM (Model-View-ViewModel)

    • Использует DataBinding/ViewBinding и LiveData/Flow.
    • ViewModel хранит состояние UI.
    class MainViewModel : ViewModel() {
        private val _data = MutableLiveData<String>()
        val data: LiveData<String> = _data

        fun loadData() {
            _data.value = Repository.getData()
        }
    }
  1. MVI (Model-View-Intent)

    • Односторонний поток данных (Intent → Model → View).
    • Состояние UI иммутабельно.
  2. Clean Architecture

    • Слои: Presentation, Domain, Data.
    • Зависимости направлены внутрь (Domain не знает о Data).
  3. Redux (редко, но встречается)

    • Единое хранилище состояния и редьюсеры.

Выбор зависит от сложности проекта:

  • MVP — для простых приложений.
  • MVVM/MVI — для реактивных интерфейсов.
  • Clean Architecture — для масштабируемости.