Model-View-Controller, or MVC, is an architectural pattern: a plan for breaking graphical user interface code into bite-sized pieces. However, what is MVC? Many people who use MVC use it in radically different ways. Depending on whom you ask, one developer's idea of MVC may be practically unrecognizable to another. This presentation will start with categorizing the role of each piece of code involved in graphical interactions with the user and what problem software engineers created MVC to solve. Then, after some small talk, I will discuss its many evolutions that mean many different things. I will look at how different MVC patterns assign responsibilities to each class. Through the lens of the Arch model and UML class diagrams, I will compare various forms of MVC. I will also describe and compare related patterns that serve the same role.
The slides are here: MVC2.pdf