The same software functionality may require to be presented using different human-computer interface styles for different user preferences, needs or disabilities.
This pattern describes an implementation architecture to facilitate easy modification of the appearance and behaviour of the human-computer interface to a constant underlying piece of software functionality. It was originally used in the Smalltalk programming language. [Krasner & Pope] This pattern is particularly relevant to object-oriented implementation environments. Whilst the patterns in this collection are not intended to deal with implementation issues, this pattern is included as the possibilities that it manifests for user interface design are very significant. There is a wider literature on this technique, (e.g., in the Java community, [Sun Microsystems Inc.]) where it is commonly known as MVC.
In MVC, the interface presented to the user is decoupled from the underlying function code by the creation of three modules with separate responsibilities: the model — which holds the data in the program, the view — which manages the presentation of the data to the user, and the controller — which provides a means for the user to interact with the data.
Thus to introduce an alternate presentation of the user interface, only the view code needs to be changed, with the model and controller being untouched. Changing the view, or providing multiple views, may be done dynamically while the program is running.
An example of where this technique may be useful is in a process control application. Here the operator may wish to switch the display of data associated with one component of the process (e.g., a pressure sensor) from one sensory mode to another (e.g., from visual to an auditory mode — spoken pressure readings, so that they can concentrate on work away from the display terminal whilst still monitoring this data). Switching between different input devices to suit users with disabilities is another example.
Therefore:
Consider the possibilities of alternate modes and styles of presentation and interaction that may be required of the user interface, and design with the possibilities made available by the model-view-controller architecture in mind.
. . . .