The ModelViewControllerPattern splits an application into three components. The model contains the core functionaility and data. Views display information to the user. Controllers handle user input. Views and controllers together comprise the user interface.
Multiple views are possible for each model enabling the interface to be replaced by a different one without rewriting the internal representation of the data. It also allows for multiple concurrent views to be used (e.g. a hex view and an ascii view)
This pattern increases the complexity of the application. Also, the three components are tightly coupled. Changes in the model's interface are likely to require changes to the view.
__See also:__ PresentationAbstractionControlPattern
Back to DesignPatterns