MVC, MVP and MVVM - Architectures

Why Design Architecture Patterns ?
There are mainly 3 architectures:
  1. MVC (Model View Controller)
  2. MVP (Model View Patterns)
  3. MVVM (Model View View Model)

Model View Controller (MVC)

Model View Presenter (MVP)

Model View View Model (MVVM)

Key Benefits of Using Them

Before using any pattern a developers needs to consider the pros and cons of using it. There are a number of key benefits to using either the MVC or MVP pattern (See list below). But, there also a few draw backs to consider. The biggest drawbacks are additional complexity and learning curve. While the patterns may not be appropriate for simple solutions; advance solutions can greatly benefit from using the pattern. I’m my experience a have seen a few solutions eliminate a large amount of complexity but being re-factored to use either pattern.

Key Differences:

So what really are the differences between the MVC and MVP pattern. Actually there are not a whole lot of differences between them. Both patterns focus on separating responsibility across multi components and promote loosely coupling the UI (View) from the business layer (Model). The major differences are how the pattern is implemented and in some advanced scenarios you need both presenters and controllers.

Here are the key differences between the patterns:

  1. MVP Pattern
    • View is more loosely coupled to the model. The presenter is responsible for binding the model to the view.
    • Easier to unit test because interaction with the view is through an interface
    • Usually view to presenter map one to one. Complex views may have multi presenters.
  2. MVC Pattern
    • Controller are based on behaviors and can be shared across views
    • Can be responsible for determining which view to display

Further More Research on topic to choose best pattern

Further research and also using the term “twisting the triad” will result in a couple of interesting articles to read that always addresses your question.

The most often heard result is this:

  1. Do you develop a web application? Learn about MVC.
  2. Do you develop a winform application? Learn about MVP.
  3. Do you develop a WPF application? Learn about MVVM.