The Model View Controller (MVC) pattern is the separation of an application's graphical user interface (GUI) from its core logic. There is no absolute design for the MVC, but as with any design pattern, it should adapt to the situation you are faced with when developing. Patterns are available to help solve or manage common problems when developing, but will only hinder that development if we restrict ourselves to absolute or strict guidelines. These lines must be blurred from one application to the next based on the situation at hand. This is why most experienced developers use multiple patterns in an application to accomplish or satisfy unique situations that occur because, as we all know by now, no two applications are the same. With that said, each application has common problems, and this is where patterns can come into play.
The MVC has existed since 1978, the year I was born. Obviously, due to technological advances, the implementations of this pattern in present applications will not fit the exact mold of the original pattern. In this book, we will take this and the rest of the patterns we have covered so far and implement them in a way that is appropriate to our project. A word of advice: Do not get hung up on conforming to any strict mold; rather, be free to make the best decisions based on the problem at hand. The goal with this pattern is to prevent having to make changes to the core logic in order to modify anything in the GUI. This chapter will explain how to accomplish this goal.