Model - View - Controller
This pattern is used when developing software with a human computer interface.
The user interface is of a long-lived system is a moving target.
When developing an interactive software system, you have to consider two aspects.
- 1.Changes to the user interface should be easy, and possible at run-time
- 2.Adapting or porting the user interface should not impact code in the functional core of the application
To solve the problem, divide an interactive application into three areas: processing, output and input:
- The Model component encapsulates core data and functionality. The model is independent of specific output representations or input behavior.
- View components display information to the user. A view obtains the data it displays from the model. There can be multiple views of the model.
- Each view has an associated Controller component. Controllers receive input, usually as events that denote user input from keyboard, mouse etc. Events are translated to service requests, which are sent either to the model or to the view. The user interacts with the system solely via controllers.
Here the problem is supporting variability in user interfaces. This problem may arise when developing software systems with human-computer interaction. You can solve this problem by a strict separation of responsibilities: the core functionality of the application is separated from its user interface.