Menu
Understanding Model View Controller
Introduction
1 Basics of MVC
1.1 Smart-UI
1.2 Document-View
1.3 Traditional MVC
1.4 In depth analysis of MVC roles
1.4.1 The Model
1.4.2 The View
1.4.3 The Controller
1.5 Forces outdating Traditional MVC
2 MVC Variations
2.1 Variations on the Model
2.1.1 Compositing Model
2.1.2 Model Pipe
2.1.3 Application Model (MMVC)
2.1.4 Side-by-Side Application Model - Selection Model
2.1.5 UI Retrieving Model
2.1.6 ModelController
2.1.7 Local Model
2.1.8 Value Model
2.1.9 Proxy Model
2.1.10 Collection Model
2.1.11 View-aware Model
2.1.12 Caching Model
2.1.13 Data/Metadata Model
2.1.14 Recording Model
2.1.15 Transactional Setting
2.2 Variations on the View
2.1.1 Pluggable View
2.2.2 Passive View
2.2.3 Widget-level vs Container-level MVC
2.2.4 Visual Proxy
2.2.5 Data Dialog
2.2.6 Visibility Allowed Notification
2.2.7 Synchronization of view state
2.3 Variations on the Controller
2.3.1 Supervising Controller
2.3.2 Action
2.3.5 Mediating controller
2.3.3 Action Filter
2.3.4 Coordinating controller
2.3.5 Event Filter
2.4 Variations on the notification strategy
2.4.1 Qualified Notification
2.4.2 Qualified Notification with Subscribing
2.4.3 Passive Model
2.4.4 Lazy Model
2.4.5 Accumulator
2.4.6 Pre/Post notification
2.4.7 Vetoers
2.4.8 Signals
2.5 Variations on the triad
2.5.1 Model-View-Adapter (MVA, Mediated MVC, Model-Mediator-View)
2.5.2 Model-GUI-Mediator
2.5.3 Application Controller
2.5.4 Push vs. pull
2.5.5 Reenskaug MVC
2.5.6 Dolphin Model-View-Presenter
2.5.7 Presenter First
2.5.8 Taligent/IBM Model-View-Presenter (MVP)
2.5.9 Presenter-Adapter-View
2.5.10 Model-View-ViewModel (Model-View-Binder)
2.5.11 View-Controller-View
2.5.12 Commands
2.5.13 Visual Editor
2.5.14 Command notifications
2.5.15 Supervising presenter
2.5.16 Presentation Model
2.5.17 Nokia Qt
2.5.18 Data binding
3 Hierarchic MVC
3.1 Controller hierarchy in Traditional MVC
3.2 Hierarchic Model View Controller (HMVC, Recursive MVC)
3.3 Presentation Abstraction Control (PAC)
3.4 View Hierarchy
4 Advanced MVC
4.1 Support Layers
4.1.1 Service layer
4.1.2 IO Layer
4.1.3 ORM
4.2 Advanced Model Patterns
4.2.1 Integrity and Validation
4.2.2 Immediate vs delayed synchronization
4.2.2 Event bus / PubSub
4.2.1 Model Distribution
4.2.2 Delayed Model
4.2.3 Initialization vs Maintainment
4.2.4 Synchronous vs. Asynchronous Model
4.4 Common Problems
4.4.1 Trashing prevention
4.4.2 Lapsed Listener Problem
4.4.3 Notification looping prevention
4.4.4 Conversion Bounce
4.5 Multithreading, async and the event loop
4.5.1 Interaction with the event loop
4.5.2 Multithreading
4.5.3 Throttling
4.6 Testing and debugging
4.6.1 MVC Testing
4.6.2 Debugging
5 MVC on the web
5.1 Backend MVC
5.1 Front controller
5.2 Page controller
5.3 Templated View
5.4 Middleware filters
5.8 Overall design
5.2 Frontend MVC
5.5 Javascript MVC
5.6 Caching strategies
5.7 Frontend/Backend interfaces
MVC Implementations
Backbone JS
RivetsJS
Questions and Answers, Tips and Tricks
Glossary
References
Understanding Model-View-Controller
Stefano Borini - 2019