Использовал ли MV-паттерны

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

Ответ

MV-паттерны (Model-View) — это базовые архитектурные подходы, такие как MVC, MVP и MVVM.

MVC (Model-View-Controller):

  • Model — данные и бизнес-логика.
  • View — UI (XML, Jetpack Compose).
  • Controller — Activity/Fragment, но в Android он часто берет на себя часть View, что приводит к "жирным" Activity.

MVP (Model-View-Presenter):

  • Presenter — промежуточный слой, обрабатывает логику и обновляет View через интерфейс.
  • Пример:
interface LoginView {  
    fun showError(message: String)  
}  

class LoginPresenter(private val view: LoginView) {  
    fun login(username: String, password: String) {  
        if (username.isEmpty()) view.showError("Empty username!")  
    }  
}  

MVVM (Model-View-ViewModel):

  • Использует ViewModel + LiveData/Flow для реактивного UI.
  • Подходит для Jetpack Compose.

Выбор зависит от проекта: MVP — для простоты, MVVM — для современного подхода.