Как Presentation слой в MVP передает данные

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

Ответ

В MVP Presentation слой (View) передает данные через интерфейс к Presenter, который обрабатывает их и обновляет View. View не должна напрямую взаимодействовать с Model.

Пример:

// View interface  
interface UserView {  
    fun showUserData(user: User)  
}  

// Presenter  
class UserPresenter(private val view: UserView) {  
    fun loadUser() {  
        val user = User("John Doe") // Получение данных (например, из Model)  
        view.showUserData(user) // Передача данных во View  
    }  
}  

// Activity (View)  
class UserActivity : AppCompatActivity(), UserView {  
    override fun showUserData(user: User) {  
        textView.text = user.name  
    }  
}  

View пассивна и только отображает данные, логика обработки — в Presenter.