---
layout: pattern
title: Model-View-Controller
folder: model-view-controller
permalink: /patterns/model-view-controller/
categories: presentation_tier
tags: pattern_tag
---

**Intent:** Separate the user interface into three interconnected components:
the model, the view and the controller. Let the model manage the data, the view
display the data and the controller mediate updating the data and redrawing the
display.

![alt text](./etc/model-view-controller.png "Model-View-Controller")

**Applicability:** Use the Model-View-Controller pattern when

* you want to clearly separate the domain data from its user interface representation
