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
, and it consists of Composite and Observer, but not
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.
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
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
) and in an English software magazine called ApplicationDevelopmentAdvisor?
about this. It's called HierarchicalModelViewController
See also: CompositePattern