**MVC** is probably the best-known architectural pattern in user interface development. Its goal is to separate the application into three main parts:
Model
Contains the data and business logic. It knows nothing about the interface.
View
Is responsible for displaying information to the user (the interface).
Controller
The mediator. Receives user actions, updates the model, and refreshes the view.
# Why MVC?
The great advantage is the **separation of concerns**. You can completely change the design (the View) without touching a single line of business logic (the Model). It also greatly facilitates unit testing.