Comparison between MVVM vs MVC vs MVP Architecture Patterns
Over the past several years websites and applications have gone through from simple-looking website pages to becoming complex web applications. Nowadays making a complex website readable and maintainable is rather difficult without the design pattern or we can say architectural patterns.
In this blog, I am going to talk about the popular patterns that most developer use and what exactly is the difference between them with a perspective towards working flow, features, ease to use, and many other points.
About Architectural Patterns
Architectural patterns are like the design of the workflow of a particular software or web application. To put it simply, it provides a reusable solution that can be beneficial to understand the process of and application. The architectural patterns help in performance management., increase productivity and reduce errors in the development process, and higher the chance to scale the application. Provide minimization of business risk and safe from crashing any updates in the development cycle.
Why Design Pattern is important?
It provides the best practices to make an application without worrying about structure codes. The design patterns consist of the relationship between classes. Working with design patterns will eventually help you to make the application and its development cycle fast enough, one of the reasons design pattern is helpful is it creates a workflow and all the parts of your application and it makes it more reusable and friendly.
The thing that makes design patterns very important is their independence which helps many developers to use design patterns and migrate them into their own applications. It is not bound to any language or framework and can be implemented and maintained easily.
Types of Architectural Patterns
There are many architectural patterns and the most popular ones are
- MVC (Model View Controller)
- MVP (Modern View Presenter)
- MVVM (Model-View-Mode)
MVC (Model View Controller)
One of the popular architectural patterns is
MVC or rather Model View Controller, the purpose of MVC is to make complex or big applications and divide them into small parts which work on their respective ability and this makes an application maintained and work efficiently. The MVC architecture is divided into three logical steps, as follows.
- Model – The model helps in storing the logical data which can comprise from business and other important data.
- View – The view demonstrates the frontend part of the application which the user see and experience.
- Controller – It works as the middleman between
Model, the controller’s job is to converse between the remaining parts and work as a translator.
Let’s understand the actual concept behind the MVC architecture pattern. Suppose there is a user who is trying the access some data regarding hotels and their vacancy. So the first thing that happens in MVC is the request goes to the
controller where the
controller takes the request of the user and sends it to the
model. Model is nothing but logical data or business-related data which is very important.
After this model will give the response controller which will be in JSON format, then again the controller sends the data to the View which is nothing but a screen of a user. The view is itself a rendered HTML file that works as a presenter layer in this architecture. The user will get the Hotel information on their screen and vacancy of the hotels.
This means the only work that view will do is to dynamically render HTML based on the data, which then
controller sends then after handling the data presentation sends the HTML file structure to the controller and then responds to the user with the data requested by them. One thing to remember is that View and Model cannot communicate directly because this will result in an uncertain data leak, the only way they can communicate is through
MVP (Model View Presenter)
MVP also known as Model View Presenter acts as an architecture pattern that offers reusable code structures and maintaining the architecture is also not difficult. It works as same as MVC but the only difference is it has a Presenter who handles most work and has all the information about the View and Model.
Model View Presenter is divided into three components as follows:
- Model – It stores the logical data or business data which is the core of the particular application.
- View – The View of the application is handled by the view and it represents the dynamic data and renders it properly in HTML. This works to display the data to the user and work efficient manner.
- Presenter– The presenter’s responsibility is to make communication the model and handle all the information regarding the
Let’s discuss first
view , it does nothing just passes the request to the
pesenter talks to the
model , models represent the business objects where the data logic is stored.
Presenter takes the information and formats the data to display on the
There are two flavors of Model View Presenter (MVP) architecture pattern
- Passive View
- Supervising Controller
In the passive view, a view does nothing it just processes the request to the presenter whereas, in the supervising controller, it may bind the user interfaces to the model.
presenter does all the processing and it has a lot of code related to the user interface somehow it is dependent on UI. Overall the MVP was not a great pattern because the
presenter knows a lot more about User Interface,
MVVM (Model View-ViewModel)
MVVM also knowns as Model View ViewModel, overcomes all the lacking features in MVC and MVP design patterns. This architectural design pattern
Model holds the logical or business-oriented data stored here.
View is nothing but a representation of a screen or rendered HTML.
ViewModel acts as a middleman between the
The MVVM model is divided into these parts:
- Model – It stores the logical data or business data which is the core of the particular application
- View– It represents the View of the application which can be said to be the screen of a phone or user experience and the view will do is to dynamically render HTML based on the data.
- ViewModel – It works as same as the controller but the only key difference it has is that it doesn’t hold any information and just works as a parsing middleman.
To understand it better, let’s take a simple scenario in which there is a screen of the user that can be said as
View and the user wants some data which is stored in
model, if the view directly tries to talk with the
Model, it causes a mismatch information problem, because the model will return the response but the user just need specific data instead he will get a whole bunch of data that is useless for him.
The reason behind it is that the model class can contain a lot of logic or a lot of business rules that we don’t really want to expose to the view. So how can we do it, there’s a
ViewModel come into pictures and whenever the
model needs to display something on the
view or the
view needs to talk to the
model they are going to use the
viewModel as a middleman, so every communication is going to go through
We learn and understood the architectural pattern but what is the difference exactly between them, here I choose three criteria that will help you to understand the difference between them and what to choose when you are building an application. This will help you get more familiar with their differences.
The category is divided like this:
Performance Evaluation: One of the reasons that should be researched is the performance of these architectural patterns, the best one in the category of performance is
MVP after this
MVC comes and the last is
MVVM provides better testability and works well in testing mode.
Compatibility: The compatibility mode is one of the core features that design patterns should have, and the best one in this category is
MVVM because of the highly multi-testability mode, it is easy to migrate from one application to another. After that
MVP comes and last is
Modifiability: While developing the application there are times when it’s needed to change or modify some features, in this scenario one of the architectural patterns which can be considered is,
MVC because of the features of the controller, the MVC can easily be modified and maintained. After that
MVVM and last is
While choosing the best architectural pattern for your project, purely depend on your work and the project criteria. Check out this article where Aman talked about the different types of programming that one can learn to build an android app. It covers all the languages with their advantages and disadvantages.
And if you are a beginner who wants to learn these architectural patterns, and the workflow of the design pattern then it can surely help you to make a reusable and readable code structure.
Learning architectural design patterns can help you to make a good application that will be more readable and easy to catch up due to multiple factors that should be laid down by the architectural patterns.
Sharing is caring
Did you like what Anas Khan wrote? Thank them for their work by sharing it on social media.
No comments so far
Leave a question/feedback and someone will get back to you