Could you give an example of a real-world scenario where the MVC is violated
and could you explain how the violation takes place? Can you suggest what
quality(ies) of a system are sacrificed in this case?
MVC is violated anytime the application control-flow and/or the model or
view/presentation is coupled into the same components/objects. This is most
often seen in J2EE Web applications when servlets are used to handle control
flow (client requests), but they also are used to access databases and
create the markup (HTML) for the responses.
When MVC is violated, tight-couplings within the source code prevent the
system from being distributed or scaled easily. It also makes upgrades to
the system much more difficult, because the system is not divided into
easily replaceable modules.
This was first published in December 2003