MVP (Model-View-Presenter) — как и MVC, является шаблоном проектирования архитектуры приложения. Данный паттерн произошел от MVC и многое унаследовал от него. Но есть и отличия. Слои Model и View по своей сути такие же как и в MVC, но вот вместо слоя Controller, в данном паттерне появился слой Presenter. Его функции и роль немного отличаются от функций контроллера. Также изменились взаимодействия слоев друг с другом.
Если в MVC наблюдалась круговая зависимость всех слоев, то в данном паттерне View и Model никак не взаимодействуют между собой напрямую. Для взаимодействия используется слой Presenter, который имеет ссылки и на View и на Model. Слой Presenter выполняет те же функции что и слой Controller в MVC и также берет на себя роль изменения View при изменении Model.