MVC
MVC
MVC
History of MVC
Presented by Trygve Reenskaug in 1979
First used in the Smalltalk-80 framework
Parts of MVC
A Model View Controller pattern is made up of the
Model
The model is responsible for managing the data of
the application.
It responds to the request from the view and it also
responds to instructions from the controller to
update itself
It is the lowest level of the pattern which is
responsible for maintaining data.
The Model represents the application core (for
instance a list of database records).
It is also called the domain layer
View
The View displays the data (the database records).
A view requests information from the model, that it
Controller
The Controller is the part of the application that
Workflow in MVC
Though MVC comes in dierent avours, the
control ow generally works as follows:
1. The user interacts with the user interface in
some way (e.g., user presses a button)
2. A controller handles the input event from the
user interface, often via a registered handler or
callback.
3. The controller accesses the model, possibly
updating it in a way appropriate to the users
action (e.g., controller updates users shopping
cart).
Dependence hierarchy
There is usually a kind of hierarchy in the MVC
pattern.
The Model knows only about itself.
That is, the source code of the Model has no
the View.
Take an example from a game: If you click on
dependencies.
No matter how the View class is modified, the
Model will still work.
Even if the system is moved from a desktop
operating system to a smart phone, the Model can
be moved with no changes.
But the View probably needs to be updated, as will
the Controller.
Advantages
Clear separation between presentation logic and
business logic.
Each object in mvc have distinct responsibilities.
parallel development
easy to maintain and future enhancements
All objects and classes are independent of each
other.
Disadvantages
Increased complexity
Inefficiency of data access in view
Difficulty of using MVC with modern user interface
too.
For parallel development there is a needed multiple
programmers.
Knowledge on multiple technologies is required.
BankAccount
+widthdraw(double) : long
+deposit(double) : long
+getBalance() : double
Observer
+update(Observable,
Object)
AccountView
+update(Observable,
Object)
SummaryView
+update(Observable,
Object)
Transactions Happen!
Controller
BankAccount
AccountView
deposit()
setChanged()
notifyObservers()
update()
getBalance()
update()
getBalance()
SummaryView