![]() |
subject > pattern > software architecture > Model-View-Controller |
![]() ![]() | ||||
Model-View-Controller (MVC) | ||||
subject | fact |
Model-View-Controller | has definition A architectural pattern used to separate the functional layer of the system (the model) from two aspects of the user interface, the view and the controller | ![]() |
facilitates divide-and-conquer because the three components can be independently designed | ![]() | |
increases cohesion because the components have stronger layer cohesion than if the view and controller were together in a single UI layer | ![]() | |
increases flexibility because it is usually quite easy to change the UI by changing the view, the controller, or both | ![]() | |
increases layer cohesion of the user interface layer | ![]() | |
increases reuse because the view and controller normally make extensive use of reusable components for various kinds of UI controls | ![]() | |
is a subtopic of 9.5 - Architectural Patterns | ![]() | |
is abbreviated as MVC | ![]() | |
is related to the multi-layer architecture | ![]() | |
is a kind of software architecture | ![]() | |
reduces coupling because the communication channels between the three components are minimal and easy to find | ![]() | |
reduces the coupling between the user interface layer and the rest of the system, as well as between different aspects of the UI itself | ![]() | |
separates the functional layer of the system (the model) from two aspects of the user interface, the view and the controller | ![]() | |
software architecture | constrains the overall efficiency, reusability and maintainability of the system | ![]() |
is decided early in the design process, although it will continue to mature as iterative development proceeds | ![]() | |
must be understood by software engineers | ![]() | |
see also software architecture^2 | ![]() | |
see also software architecture^3 | ![]() | |
pattern | should be as general as possible | ![]() |
should be described in an easy-to-understand form so that people can determine when and how to use it | ![]() | |
should contain a solution that has been proven to effectively solve the problem in the indicated context | ![]() |
Next software architecture: stable architecture Up: software architecture Previous software architecture: distributed architecture