What is MVC?

MVC is broken into three parts:

  • Model

    Models represent the data for your application. They don't know anything about views or controllers

  • View

    Views are presented to users and are how users interact with the app.

  • Controller

    Controllers are the decision-makers. They are the glue between the model and the view.

Source: Chrome Apps Dev Docs

An Analogy

Apple Store

Why MVC?

There are multiple advantages to MVC:

  • Separation of Concerns

  • Simultaneous development

  • High Cohesion

  • Low Coupling

  • Ease of Modification

  • Code Organization

Source: Coding Horror

Why not MVC?

There are some drawbacks to MVC:

May not be suitable at scale

Limiting for apps with lots of state changes

MVC Frameworks

Examples: Putting convention over configuration


MVC was originally intended to help an end user manipulate an underlying computer system in a more intuitive way.

Xerox Parc's Original MVC Diagram
Source: Trygve Reenskaug