MVP разделяет приложение на три компонента:
- Model: слой данных и бизнес-логики. Не зависит от представления (View).
- View: слой пользовательского интерфейса. Отображает данные из Presenter и передает действия пользователя ему же. Не содержит бизнес-логики.
- Presenter: посредник между Model и View. Содержит логику представления, получает данные из Model, форматирует их для View и обрабатывает действия пользователя.
Взаимодействие:
- View сообщает Presenter о действии пользователя (например, клик по кнопке).
- Presenter обрабатывает действие, возможно, запрашивая или модифицируя данные в Model.
- Model выполняет операцию и возвращает результат Presenter.
- Presenter обновляет View, передавая ему необходимые для отображения данные.
Преимущества:
- Улучшенное разделение ответственности.
- Повышенная тестируемость (можно тестировать Presenter отдельно от View).
- Упрощение поддержки и расширения кода.
Недостатки:
- Увеличение количества классов и интерфейсов.
- Более сложная начальная настройка по сравнению с MVC.
Пример:
java