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