MVC, MVP and MVVM Design Pattern
MVC,
MVP, and MVVM are three popular design patterns in software development. Let’s
have a look on Model View Controller (MVC), Model View Presenter (MVP) and
Model View View-model (MVVM) one by one. All these design patterns by and large help in
developing applications that are loosely combined, easy to test and maintain. All
discussion about the pattern is made in context of Android as a platform.
Model View
Controller (MVC)
MVC design
pattern divides an application into three major aspects: Model, View, and
Controller.
Model
View
The View represents UI components like XML,
HTML etc. View displays the data that is received from the controller as the
outcome. In MVC pattern View monitors the model for any state change and
displays updated model. Model and View interact with each other using the
Observer pattern.
Controller
The Controller is responsible to process incoming requests. It processes the user's data through the Model and passing back the results to View. It normally acts as a mediator between the View and the Model.
Model View
Presenter (MVP)
The
MVP pattern is similar to the MVC pattern. It is derived from MVC pattern,
wherein the controller is replaced by the presenter. This pattern divides an
application into three major aspects: Model, View, and Presenter.
Model
The
Model represents a set of classes that describes the business logic and data.
It also defines business rules for data means how the data can be changed and
manipulated.
View
View is a component which is directly interacts
with user like XML, Activity,
fragments. It does not contain any logic implemented.
Presenter
The Presenter receives the input from users via View,
then process the user's data with the help of Model and passing the results
back to the View. Presenter communicates with view through interface. Interface
is defined in presenter class, to which it pass the required data. Activity/fragment
or any other view component implement this interface and renders the data in a
way they want.
In
the MVP design pattern, the presenter manipulates the model and also updates
the view. In
MVP View and Presenter are completely decoupled from each other’s and
communicate to each other’s by an interface. Because
if decoupling mocking of the view is easier and unit testing of applications
that leverage the MVP design pattern over the MVC design pattern are much
easier.
Model View
View-model (MVVM)
MVVM pattern supports two-way data binding
between View and View-Model. This allows automatic propagation of changes,
inside the state of View-Model to the View. Generally, the View-Model utilizes
the observer pattern to inform changes in the View-Model to the Model.
View-Model
It
is responsible for exposing methods, commands, and other properties that help
to maintain the state of the view, manipulate the model as the result of
actions on the view, and trigger events in the view itself. View has a
reference to View-Model but View-Model has no information about the View. There
is many-to-one relationship between View and View-Model means many Views can be
mapped to one View-Model. It is completely independent of Views.
The bi-directional data binding or the two way data
binding between the view and the View-Model ensures that the models and
properties in the View-Model is in sync with the view. The MVVM design pattern
is well suited in applications that need support for bi-directional data
binding.
For
more deep explanation refer: http://geekswithblogs.net/dlussier/archive/2009/11/21/136454.aspx
To find more interesting topics on Software development follow me at https://medium.com/@ankit.sinhal
You can also find my
Android Applications on play store
I would like to thank you for the efforts you have made in writing this interesting and knowledgeable article. We have very experienced software developers for software, app, mobile development services in the UK. Hire our expert developer for custom MVP development in the UK.
ReplyDeleteminimum viable product app developer