Model-View-Controller is not a Design Pattern itself, but is made up of a number of smaller design patterns.
The views form a tree using the
CompositePattern. The relationship
between views and models is the
ObserverPattern. The controllers are
strategies of the views.
DocumentView is more popular now than true
ModelViewController, and it consists of Composite and Observer, but not
Strategy.
Although
CompositePattern,
ObserverPattern and
StrategyPattern are the core of
ModelViewController,
it uses more patterns.
The model is often a Mediator (The Smalltalk Browser is a good example).
The tree of views
often contains Decorators to add properties to views. A view often uses
an Adaptor to convert the model to a standard interface that the view
can use. Views create controllers using a Factory Method.
ModelViewController is hard to learn because it is complex. It is much
easier to understand if you learn the patterns one at a time and then fit
them together.
-
RalphJohnson
Aggregrate Design Patterns also known as CompoundPatterns (JohnVlissides) or CompositeDesignPatterns (DirkRiehle)
I find that I often apply
ModelViewController recursively -- for example, the view component of a user interface builder has a
ModelViewController within itself, such that the view component of the user interface builder is the model of a finer-grained
ModelViewController that allows the user to manipulate it.
ModelViewController seems to recur, for me, in each layer of each
FourLayerArchitecture I work with. Is there a category for patterns that apply themselves recursively? It could also be an example of "If the only tool you have is a hammer, everything is a nail". --
TomStambaugh
This has been discussed as RecursiveModelViewController
There have been articles in
JavaWorld (
http://www.javaworld.com) and in an English software magazine called ApplicationDevelopmentAdvisor
? about this. It's called
HierarchicalModelViewController. --
AdewaleOshineye
See also:
CompositePattern,
ObserverPattern,
StrategyPattern,
MediatorPattern