blog posts

MVP architecture

What is MVP architecture?

One of the most important software architectures is MVC or Model-View-Controller architecture, which is used in designing and building various applications and services. Another branch of this style of architecture is MVP or Model-View-Presenter, which is mostly used to build the user interface (UI). In this model, the Presenter is counted as the “middle man” and all program logic is sent to the Presenter. In this article, we want to introduce you to the MVP software architecture and explain how it differs from MVC, stay tuned.

What is software architecture?

It is better for programmers to spend their time solving new problems and challenges. Unfortunately, this perspective often causes us to become overwhelmed when it’s time to start a project. It is also difficult to develop and maintain software that does not follow a specific pattern or architecture. Having different architectures like MVC, MVP or MVVP help to reduce the complexity of the program as much as possible and increase the software development process.

The architecture of a software refers to the definition of the overall structure of the system and its relationship to other parts. Each architecture includes different patterns that are selected according to the type of software implementation. Patterns such as MVP are a subset of software architecture. These templates act as a roadmap for the developer and do not allow him to get in repetition. The choice of software architecture that you intend to implement should be such that it meets the technical and operational requirements of the system well.

What is the MVC architecture pattern?

The MVC model is a type of software architecture that consists of 3 parts:

  • Model: This is the interface between the view and the controller. The model itself includes the Data Model, Business Model, and View Model subsections, which are responsible for tasks such as receiving and storing information, interacting with data, sending information, and shaping system logic.
  • View: View is the part that is the interface between the user and the software and controls the interaction between these two parts.
  • Controller: The controller is the interface between the two parts and is for managing requests and operations based on logic.

What is the MVP software architecture?

The MVP architecture has a separate architectural model for implementing the software user interface called the Model-View-Presenter. In this architecture, the Presenter is responsible for providing logic and is considered an architectural model, regardless of a design pattern, due to its involvement in organizing high-level system operations. In general, this architectural model helps to reduce the complexity of implementing the software user interface. The MVP model is into the following 3 general sections:

  • Model: Acts as an interface and defines the data to be in the user interface.
  • View: Displays the data and sends the user commands to the Presenter.
  • Presenter: It is like a bridge between Model and View. Presenter retrieves various data from Model repositories and prepares them for display in View.

The above 3 sections do this in simple language

  • Model: What should I show?
  • View: How do I display it?
  • Presenter: What format should I display to the model and how should I manage user events such as input?
  • What are the applications of MVP software architecture?

What are the applications of MVP software architecture?

Many architectures and templates can be for to developing Android-based applications, but MVP helps you complete larger projects with less hassle. In this architecture, the Model section is responsible for managing program logic and working with data. This section is in Android applications by the data access layer such as database APIs.

View is also the interface between the users and the Presenter. Section P, which distinguishes this architecture from MVC architecture, is the interface between the View section and the user. This section has the task of updating the view section and receiving the results of the request to the user by receiving the user request and presenting it to the model section.

This architecture provides maintenance and testability in Android applications. It also allows developers to easily do Unit Testing by separating the View section. We suggest that you refer to the relevant article on the site to learn more about Unit Testing.

Implement MVP architecture in different programming languages

There are several languages ​​that allow you to use the MVP architecture in your applications. In PHP, for example, the Nette framework supports the MVP architecture. In Java, frameworks like JFace and Vaadin have this feature. Also in .NET technology, MVP architecture can be. MVP is very popular in Android and many Android developers use this template.


It is a pattern of MVC architecture and its main difference is in how the Controller and Presenter work. When we separate logic and program representation with the help of an architecture like MVC or MVP, our focus becomes more on the different components of the project. It may not be cost-effective to use a structure like MVP in small projects, but when our project gets bigger and team members, product capabilities, code size, etc. increase, it makes sense to use an architecture like MVP. This will save a lot of time for yourself and your team members and reduce the process of developing, debugging and solving project problems.