Java: Patterns

The Model-View-Controller design pattern

Separation of a program into twp parts, the user interface and the logic is a common technique for reducing coupling. A further refinement is to separate the user interface into two aspects - the view, which more or less corresponds to the output, and the controller, which more or less corresponds to the input. The logic in often called the model. Organizing a program this is referred to as the Model-View-Controller design pattern.

The problem with MVC is that it is not entirely clear. For example, you will find many references to www.roguewave.com/products/whitepapers/mvcwp.pdf, Distributed MVC, but this article in itself casts doubt on the clarity of the concept. Eg,

"In the interest in preserving generality, the core MVC definition leaves a lot unspecified or open to interpretation. Because of this, many developers find MVC difficult to understand and apply. Often, developers come away with subtle - and sometimes not so subtle - differences in interpretation and application of the paradigm."

More sources of information, including links, can be found at c2.com/cgi/wiki?ModelViewControllerAsAnAggregateDesignPattern, Model View Controller As An Aggregate Design Pattern, and ootips.org/mvc-pattern.html, Model-View-Controller.

Other patterns are sometimes suggested as replacements for MVC, for example Document-View, or Model-View-Presenter. Not that these are entirely clear.

Another similar approach is described in Data Models for Desktop Apps, using JavaBeans and events/listeners to separate the GUI portion.

Webliography