MVP (Model-View-Presenter) – это шаблон проектирования, который используется для разработки пользовательского интерфейса в приложении.
MVP разделяет ответственность за бизнес логику и логику отображения.

MVP состоит из следующих частей:

• Model представляет собой данные, которые необходимо показать пользователю. В большинстве Android-приложений моделью выступает слой, отвечающий за получение данных с бэкэнда.

• View – это класс, отвечающий за отображение данных. В Android-приложениях View – это обычно Activity или Fragment.
Кроме того View слушает пользовательские ивенты и делегирует их обработку в Presenter.
Например View может иметь такой код:
loginButton.setOnClickListener { presenter.onLoginClicked() }


• Presenter – это класс, который имеет ссылки и на View, и на Model, и расположен между ними. Presenter отвечает за обработку ивентов, приходящих из View, получение данных из Model и обновление View c полученными данными.
В Android-приложениях хорошей практикой считается делать Presenter независимым от Android SDK. Другими словами Presenter не имеет доступа к Android классам напрямую и может быть использован в plain java приложении.

Подробнее о MVP