Model-View Controller
Download
Report
Transcript Model-View Controller
Model-View Controller
DESIGN PATTERN PRESENTATION AND
DISCUSSION
RAJAT ARYA (RAJATA@U)
EFECS * OIM
Agenda
Definition
what is this fancy thing called MVC?
History / Origins
where does it come from?
Functional Description
how does MVC actually work?
Goal / Benefits
why is it important?
Example Scenarios
where could MVC be used?
Sample MVC Implementation Review
lets see this thing actually working
Modern Implementations
where does it exist right now?
Questions?
Reference Materials
MVC Definition
The Model-View Controller Paradigm is a triad of
classes used to build modular applications.
MVC consists of three components (objects):
Model – application object (data)
View – user interface (presentation)
Controller – defines how user interface reacts
to user action
History
First Appeared Formally in:
“A cookbook for using the model-view controller user
interface paradigm in Smalltalk-8”
by Glenn E. Krasner and Stephen T. Pope
Journal of Object-Oriented Programming, 1(3):26-49
August/September 1988
Functional Description Intro – Observer Pattern
MVC utilizes two
applications of the
Observer Pattern
Observer Pattern (aka
Publish-Subscribe)
Attach / Detach / Notify
Decouples Subjects from
Observers, subjects do not
know about observers
directly
MVC Functional Description
MVC Definition: Specific
application of the Observer
Design Pattern
Model is application
object (data)
View is the user interface
(presentation) – observes
Model
Controller defines way
user interface reacts to
input – observes View
Observer Pattern Used
Twice (Controller observes
View and View observes
Model)
View
Controller
Model
MVC Functional Description (2)
Controller maintains
knowledge of both View
and Model, View has
knowledge of Model
Controller observes
changes in View (1),
informs Model (2)
View observes changes
in Model (3) and
updates
(1)
View
(3)
Controller
(2)
Model
Goal / Benefits
Modularity
decoupling components
allows each component to be versioned independently
worked on by individuals on team (UI person, DB person, etc)
Flexibility
multiple Views for one Model (web frontend, desktop frontend, mobile
frontend, etc)
replace one component (replace data storage from flat file to database)
Maintainability
only change one component where bug exists, less risk in late changes
Testability
each component communicates through contract so each component can
be unit-tested independently
Example Scenarios
Spreadsheet application (classic)
same data (model) spreadsheet can have multiple charts (views)
updating spreadsheet should result in updated charts
example of multiple views, single controller, single model
Scaling an application
view is desktop or web, model is a flat-file database
updating the database to clustered set of SQL servers
only model needs to take changes for architecture, controller
connects to new model and doesn’t know that the model is now
backed by several DBs instead of one file
Multiple user interfaces to application
web interface, mobile phone interface, point-of-sale interface,
desktop interface
multiple views, multiple controllers, single model
Sample Implementation Review
Small WPF Application written in C# to illustrate how
MVC.
Email me if you would like a copy of the source code.
Modern Implementations
GUI Frameworks for desktop applications
Application Kit – part of Cocoa for OS X desktop apps
GTK+ - part of GTK libraries, used in lots of apps
Microsoft Foundation Classes (MFC) – Document/View Architecture
Java Swing
Windows Presentation Framework (WPF)
TK Toolkit – part of Tcl/Tk
Implementations of MVC in web-based frameworks
ASP .NET MVC Framework (.NET)
ProMesh.NET (.NET)
Grails (Java)
Struts (Java)
Spring (Java)
PureMVC (JavaScript)
Ruby on Rails (Ruby)
Zend Framework (PHP)
Django (Python)
Pylons (Python)
Fin.
QUESTIONS?
Reference Links
Design Patterns: Elements of Reusable Object-Oriented Software
If you get nothing else from this talk, please go look this up – it is the most
important book I’ve read regarding object-oriented programming:
http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-WesleyProfessional/dp/0201633612/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=12333
61435&sr=8-1
MVC
http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller
http://www.ootips.org/mvc-pattern.html
http://c2.com/cgi/wiki?ModelViewController
http://st-www.cs.uiuc.edu/users/smarch/st-docs/mvc.html
Observer Pattern
http://www.research.ibm.com/designpatterns/example.htm
http://en.wikipedia.org/wiki/Observer_pattern
http://msdn.microsoft.com/en-us/library/ms954621.aspx