MVC (Model View Controller) design patterns all the rage, in fact, the MVC pattern is pretty much standard with every web framework.
The idea is to keep code separate, the assumption is that with this separation comes ease of maintenance, and allows for developers of different skill sets to work in different areas. Here’s a short description of each:
- The Model – This represents the data that the application operates.
- The View – This represents the web pages that render the model in a form that makes it easy for users.
- The Controller – This takes input from the view, calls associated model classes, and manipulates that data and input with business logic to direct the user to another view.
The reason this was created was because of Model-1 Web Design. Here you had business logic, model logic, and display all on the same dynamic web page usually a JSP (Java Server Page) or ASP (Active Server Page). This was ugly and certain parts of maintainability were hard, but was efficient in certain aspects.
The problem comes in with MVC is an over engineering and overly abstracted mechanism for just pushing data into and out of a database, which is essentially what a web application usually is. So how can you avoid the problems of model 1, with the over engineering of model 2? You use a Model 1.5 architecture.