The MVC pattern, in a nutshell, is this:
The model represents the data, and does nothing else. The model does NOT depend on the controller or the view. The view displays the model data, and sends user actions (e.g. button clicks) to the controller.
Model view controller (MVC) is a very useful and popular design pattern. If you're writing software, you should know it.
In a typical application you will find these three fundamental parts:
Unnecessary complexity is the devil of software development. Complexity leads to software that is buggy, and expensive to maintain. The easiest way to make code overly complex is to put dependencies everywhere. Conversely, removing unnecessary dependencies makes delightful code that is less buggy and easier to maintain because it is reusable without modification. You can happily reuse old, stable code without introducing new bugs into it.
The primary advantage of the MVC design pattern is this:
MVC makes model classes reusable without modification.
The purpose of the controller is to remove the view dependency from the model. By removing the view dependency from the model, the model code becomes delightful.
The MVC design pattern inserts a controller class between the view and the model to remove the model-view dependencies. With the dependencies removed, the model, and possibly the view, can be made reusable without modification. This makes implementing new features and maintenance a breeze. The users get stable software quickly, the company saves money, and the developers don't go insane.