Какие плюсы и минусы MVP

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

Ответ

Плюсы:
✅ Четкое разделение ответственности (View, Presenter, Model)
✅ Легче тестировать бизнес-логику (Presenter не зависит от Android API)
✅ Проще поддерживать и масштабировать
✅ View становится "глупым", что уменьшает связность

Минусы:
❌ Больше boilerplate-кода (интерфейсы для View-Presenter)
❌ Presenter может стать "God object" при неправильном проектировании
❌ Нет стандартной реализации (разные вариации MVP)
❌ Сложность с сохранением состояния Presenter при повороте экрана

Пример:

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

    interface Presenter {
        fun login(username: String, password: String)
    }
}

// Presenter
class LoginPresenter(private val view: LoginContract.View) : LoginContract.Presenter {
    override fun login(username: String, password: String) {
        if (username.isEmpty() || password.isEmpty()) {
            view.showError("Fields empty!")
        } else {
            // Auth logic...
            view.onLoginSuccess()
        }
    }
}