Changes to the user interface should be easy, and even possible at
run-time.
Supporting different 'look and feel' standards or porting the user
interface should not affect code in the core of the application.
The separation of the model from view and controller components
allows multiple views of the same model.
Model:
- The model component encapsulates core data and functionality. The
model is independent of specific output representations or input
behavior.
Responsibility:
Provides functional core of the application.
Registers dependent views and controllers.
Notifies dependent components about data changes.
View:
- View components display information to the user. A view obtains the
data from the model. There can be multiple views of the model.
- Each view has an associated controller component. (!?)
Each view creates a suitable controller. There is a one-to-one relationship between views and controllers. Views often offer functionality that allows controllers to manipulate the display.
Responsibility:
- Creates and initializes its associated controller.
- Displays information to the user.
- Implements the update procedure.
- Retrieves data from the model.
Controller:
- The user interacts with the system solely through controllers.
Responsibility:
- Accepts user input as events.
- Translates events to service requests for the model or display requests for
the view.
- Implements the update procedure, if required.
Bookmarks