MVP разделяет приложение на три взаимодействующих компонента:
- Model: Управляет данными приложения, бизнес-логикой. Она не зависит от пользовательского интерфейса.
- View: Отображает данные пользователю и обрабатывает его ввод. Она пассивна и не содержит логики принятия решений.
- Presenter: Выступает посредником между Model и View. Получает данные от Model и форматирует их для View. Реагирует на события View и обновляет Model. View ссылается на Presenter, а Presenter ссылается на View через интерфейс.
Преимущества MVP:
- Устойчивость к изменениям UI: Логика находится в Presenter, который не зависит от конкретной реализации View.
- Тестируемость: Presenter легко тестировать в изоляции, без необходимости мокать UI.
- Разделение ответственности: Четкое разделение ролей между компонентами улучшает сопровождаемость кода.
Пример:
kotlin