The MVC architecture: an overview

In the MVC paradigm, the end user input, the modeling of the external world, and the visual feedback to the user are explicitly separated and handled by three kinds of object:
The model
which manages the behavior and data of the application domain, responds to requests for information about its state (coming usually from the view), and responds to instructions to change its state (usually issued by the controller).
The view
which manages the visual display of the data represented by the model.
The controller
which translates interactions with the view, such as mouse clicks and key strokes, into updates to be performed on the model, instructing the model or the view or both to change as appropriate.
The MVC paradigm decouples the views and models by establishing a subscribe/notify protocol between them. A view must ensure that its appearance reflects the state of the model, and a model must ensure that whenever its content undergoes modifications, all the connected views are updated accordingly. With this approach, multiple views can be connected to the same set of information while providing different graphic representations, which may be dependent on the view configuration.
Unlike the model, which may be loosely connected to multiple view-controller pairs, each view is associated with a unique controller and vice versa. Therefore, although the model is limited to sending notifications about changes in its structure or content using the subscribe/notify protocol, both the view and the controller can send messages directly to each other and to their model.
In JViews TGO, the MVC architecture is defined by the set of interfaces shown in the following figure.
tgo_architecture_overview.png
Classes implementing the MVC architecture in JTGO