Какие знаешь особенности MVP

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

Ответ

MVP (Model-View-Presenter) — это архитектурный паттерн, разделяющий приложение на три слоя:

  1. Model — отвечает за данные и бизнес-логику.
  2. View — отображает UI и передает пользовательские действия в Presenter.
  3. Presenter — посредник между Model и View, обрабатывает логику отображения.

Особенности:

  • View пассивная — только рисует UI, не содержит логики.
  • Presenter не знает о Android-контексте — упрощает тестирование.
  • Связь View-Presenter через интерфейсы — уменьшает связность.

Пример:

// View
interface LoginView {
    fun showError(message: String)
    fun onLoginSuccess()
}

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