c.Model View Controller (MVC)
This pattern was originally designed for thick client application but not much in use today and is of academic interest only
Web version of MVC pattern is know as MVC2
Motivation
This pattern allows total decoupling of Model (Data), View (Presentation/UI) and Controller(Strategy or Logic) as a result any of them can be changed at run time.
Summary
This pattern has three elements i.e. classes
MODEL represent a business domain object.
VIEW renders the data provided by model into a form suitable for interaction.
CONTROLLER receives user input and initiates a response by making calls on model objects.
It can be viewed as MVC=MVVM+Controller (View +Data)
How it Works
Though MVC comes in different flavors, control flow is generally as follows:
The user interacts with the user interface in some way (for example, by pressing a mouse button).
The controller handles the input event from the user interface, often via a registered handler or callback, and converts the event into an appropriate user action, understandable for the model.
The controller notifies the model of the user action, possibly resulting in a change in the model's state. (For example, the controller updates the user's shopping cart.)
A view queries the model in order to generate an appropriate user interface (for example the view lists the shopping cart's contents). The view gets its own data from the model. In some implementations, the controller may issue a general instruction to the view to render itself.
In others, the view is automatically notified by the model of changes in state (Observer) that require a screen update.
The user interface waits for further user interactions, which restarts the control flow cycle.
Types of MVC Design
Classic Version (MVC )
Definition presented above is classic MVC or also called academic version.
This version is more suitable for client application where request response time is very less. .
Web MVC (MVC 2)
This model is a special case of Classic MVC in which View Do not directly observe model and wait of notification from controller.
This model is more stable for Web Developmental platforms like ASP.Net
When to use
Use this pattern if your UI transition logic is very complex and need to handle at central point.
Implementation
Usually you avoid using handcrafting and prefer MVC frameworks that provides out of the box implementation.
Related Patterns
MVC Pattern is it self consist of multiple pattern
Observer : In Classic MVC view also acts as observer and listen for change notification of model
Strategy:Controller uses strategy pattern to decide which view to load.
Composite pattern is used by View to implement complex UI
Specific Considerations
MVC vs MVP
In MVC Controller decide which view to load and when model will be notified for data chnages.
In MVP there is controller is replaced by presenter that is specific to view and ac as either superviser of wrapper of model (data)
References
http://stackoverflow.com/questions/2056/what-are-mvp-and-mvc-and-what-is-the-difference