Model–View–Controller (MVC) is a software architecture.

  • The model manages the behavior and data of the application domain, responds to requests for information about its state (usually from the view), and responds to instructions to change state (usually from the controller).
  • The view renders the model into a form suitable for interaction, typically a user interface element. Multiple views can exist for a single model for different purposes.
  • The controller receives input and initiates a response by making calls on model objects. A controller accepts input from the user and instructs the model and viewport to perform actions based on that input.


Over here we replace Controller with Presenter (one which presents the changes done in model back to view). The main difference between both is that Presenter refers back to the view while Controller doesn’t.


Model–View-ViewModel talks of creating a new model (in addition to your domain model).