While I was trying to concrete the concept of design pattern, I came up with a question: As I asked in the title, Is MVC(Model-View-Controller) architecture kind of Design Pattern?

  • Well according to tutorialspoint.com the answer is yes tutorialspoint.com/design_pattern/mvc_pattern.htm
    – Jaydee
    Jul 22 '15 at 8:36
  • Yet another MVC question. My advice is, don't ask about MVC theory here. The billions of different answers battling each other will only confuse you.
    – Alternatex
    Jul 22 '15 at 8:37
  • It's sometimes named architectural pattern, so a bit more high level than your common OOP design pattern since it works on the whole project structure and not only a single class (or small group of classes). Jul 22 '15 at 8:44

The Timeless Way of Building, which introduced the idea of Patterns was written in 1979, and it took another decade until programmers started to take Christopher Alexander's ideas and apply it to software (Design Patterns: Elements of Reusable Object-Oriented Software was released in 1994).

The original MVC paper(s) were written starting in 1978, before the introduction of the concept of Patterns and ~15 years before this concept reached the programming world. So, Trygve Reenskaug certainly did not think about it as a Pattern.

However, in modern terms, I would characterize it mainly as a User Interaction Design Pattern, which also influences Software Architecture and Software Design, so it also has some traits of a Software Architecture Pattern and a Software Design Pattern. But the main focus of MVC is User Empowerment and the Direct Manipulation Metaphor, both of which have nothing to do with Architecture or Design, they are all about User Interaction.


Yes and no and it depends. MVC is one of the terms which once had a very specific meaning, but then have grown in use to become a much broader and less specific term.

The original use of MVC was specifically as a oo design pattern used when coding desktop GUIs in Smalltalk. The pattern was specifically concerned about separating the data displayed in a form from the UI controls used to display the data, and the input gestures (mouse clicks etc.) used by the user. This was an early attempt to structure GUI code, and many more refined GUI patterns have developed since (patterns like Model-View-Presenter, Model-View-Viewmodel and so on). Martin Fowler have written a nice overview of the history of the MVC pattern as used in GUIs.

Later someone decided to reuse the term MVC for structuring web applications a certain way. It is not really the same pattern, but you can say that web MVC was inspired by the separation of concerns in the original MVC. It is more of an architecture than a classic pattern though. You will get really confused if you try to apply your understanding of the original MVC pattern to how the terms are used in MCV web apps - for example what is called the view in web-MVC corresponds more or less to the model in classic MVC.

Now MVC is often used to describe a whole web application framework, like in Microsofts Asp.net MVC framework.

Even then, some old timers continue to use the term MVC for a specific patten used when developing desktop GUI code. So in short, MVC can mean very different things depending on who you ask.

Not the answer you're looking for? Browse other questions tagged or ask your own question.