ryanwold.net

A civic-minded citizen seeking the singularity

An entry

MVC (Model View Controller)

Date: 2019-10-03
Status: release
Tags: MVC design patterns

Model View Controller is a general description of a separation between common elements in a software application:

  • The Model - source data
  • View - visible representation of that data (as a list, diagram, or chart; for example)
  • Controller - translation of user intent between the Model and a View, and vice-versa

Below are some general notes about distinctions in the term MVC and more descriptive descriptions of the term. Some people think this may be the most misunderstood design pattern. I disagree. But I think it helpful to understand the origins and intent of this pattern as it relates to addressing software design issues; especially regarding visually intense applications.


The Model-View-Controller pattern as an obvious solution to the general problem of giving users control over their information as seen from multiple perspectives. MVC has created a surprising amount of interest. Some texts even use perverted variants for the opposite purpose of making the computer control the user.

To any given Model there is attached one or more Views, each View being capable of showing one or more pictorial representations of the Model on the screen and on hardcopy. A View is also able to perform such operations upon the Model that is reasonably associated with that View.

It should always be possible to write a method in a controller that sends messages to views which exactly reproduce any sequence of user commands.

References