120 likes | 281 Views
Model View Controller Architectural Design Pattern. Typically divided into 2 layers, similar to the Layered Architecture Pattern:. Top Layer : User Interface (Front End). Controller. View. uses. Bottom Layer : System Data & Logic (Back End). Model. One way communication:.
E N D
Typically divided into 2 layers, similar to the Layered Architecture Pattern: Top Layer : User Interface (Front End) Controller View uses
One way communication: Model-View-Controller Static Structure Controller View uses Retrieves and displays modifies Signals Signals Model Dynamic Variant
Advantages • Views and controllers can be modified, added, and removed without destroying the model. • Make design for the user interface simple and organized.
Advantages • Keeping View and Control separate makes it simple to change View without changing how the user can interact with the program. • The UI can be altered during run time simply by changing and replacing the views and controllers.
Advantages • Separation of Data from presentation • MVC enforces separation • Multiple Views & Deals with changes • MVC provides a way to have multiple views that rely on one model and in todays world we are always creating applications that can be accessed in more than one way. • Views and controllers can be added without messing up the model since components are nearly decoupled.
Advantages • Can be used with any interface since it returns data without applying any format • Clarity of design • Looking at models public methods helps to understand how the models behavior works and makes the program easier to implement and maintain. • Efficient modularity of design allows components to be swapped
Disadvantages • General • Old, lots of newer variations (MVP, MVA, etc) • More applicable for programs with GUIs • Overkill on smaller projects • Complexity • More code to write • Changeability • The architecture is well-specified, making deviations difficult
Disadvantages • Cohesion • Cohesion is low because the different components have different goals • Coupling • Carries a high risk of coupling (based on implementation) • Views and Model, for example • Controller needs to collaborate with the other two, risk there as well.