Tổng quan
Luồng xử lý:
Người dùng tương tác với user interface bằng cách nào đó (như
click chuột)
Bộ điều khiển xử lý sự kiện đầu vào từ user interface rồi convert
các sự kiện thành user action, mà model có thể hiểu được
Bộ điều khiển sẽ thông báo cho các model của user action, có
thể dẫn đến một sự thay đổi trong model state.
View truy vấn model để tạo ra user interface thích hợp
View lấy dữ liệu của nó từ model
Trong một số trường hợp, controller sẽ đưa ra một số chỉ định
tổng quát để view có thể tự render nó
View được thông báo một cách tự động những thay đổi trong
model state mà cần update lại màn hình
User interface chờ tương tác tiếp theo của người dùng, để lăp lại
control flow
12 trang |
Chia sẻ: thanhle95 | Lượt xem: 565 | Lượt tải: 1
Bạn đang xem nội dung tài liệu Bài giảng Phát triển phần mềm mã nguồn mở - Bài 4: MVC, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
MVC
1
Nội dung
2
I. MVC là gì?
II. Tổng quan về MVC
III. Quan niệm
IV. Observer pattern
MVC LÀ GÌ?
Là một mô hình kiến trúc trong công nghệ
phần mềm
MVC tách dữ liệu ra khỏi giao diện
MVC phân tách các thành phần khác nhau
của ứng dụng (input logic, business logic, và
UI logic), và cung cấp một liên kết giữa
chúng
Tổng quan
Luồng xử lý:
Người dùng tương tác với user interface bằng cách nào đó (như
click chuột)
Bộ điều khiển xử lý sự kiện đầu vào từ user interface rồi convert
các sự kiện thành user action, mà model có thể hiểu được
Bộ điều khiển sẽ thông báo cho các model của user action, có
thể dẫn đến một sự thay đổi trong model state.
View truy vấn model để tạo ra user interface thích hợp
View lấy dữ liệu của nó từ model
Trong một số trường hợp, controller sẽ đưa ra một số chỉ định
tổng quát để view có thể tự render nó
View được thông báo một cách tự động những thay đổi trong
model state mà cần update lại màn hình
User interface chờ tương tác tiếp theo của người dùng, để lăp lại
control flow
Cop
yr
Quan niệm
View
model representation
Model
business logic
Controller
user interaction
Update
Event
User
Actions
Change
View
Set
State
Get
State
Quan niệm
Model quản lý hành vi và dữ liệu của miền ứng
dụng.
Khi xử lý sự kiện, model thông báo cho các bộ quan
sát (thường là view) khi thông tin được thay đổi để
nó có phản ứng thích hợp.
View render model thành một form phù hợp cho việc
tương tác
Trên cùng một model có thể có nhiều view để phục
vụ cho các mục đích khác nhau
Quan niệm
Controller tiếp nhận yêu cầu người dùng và khởi động một
respond bằng cách gọi đối tượng model.
Controller nhận yêu cầu từ người dùng rồi chỉ định cho model và
view thực hiện hành động dựa trên yêu cầu đó
Một ứng dụng MVC là tập hợp của nhiều bộ ba model –
controller – view, mỗi bộ chịu trách nhiệm với một UI khác nhau
MVC thường thấy trên các ứng dụng web mà view là HTML hoặc
XHTML được sinh ra bởi ứng dụng
Controller nhận GET hoặc POST input và quyết định sẽ làm gì
với nó
Model không chỉ đơn thuần là một cơ sở dữ liệu, model trong
MVC là cả dữ liệu và logic nghiệp vụ cần thiết để thao tác dữ liệu
trong ứng dụng
Quan niệm
Input → Process → Output
↔
Controller → Model → View
8
Cop
yr
Observer Pattern
Định nghĩa phụ thuộc {một – nhiều} giữa các
đối tượng sao cho khi một đối tượng thay đổi
trạng thái, tất cả các phụ thuộc của nó sẽ tự
động được thông báo và cập nhật.
Dùng để tách chủ đề khỏi observer, do chủ
đề cần ít thông tin để đánh thức observer.
Lược đồ lớp Observer
Observable
+addObserver(Observer)
+deleteObserver(Observer)
+notifyObservers(Object)
#hasChanged() : boolean
#setChanged()
Observer
+update(Observable,
Object)
AccountView
+update(Observable,
Object)
BankAccount
+widthdraw(double) : long
+deposit(double) : long
+getBalance() : double
SummaryView
+update(Observable,
Object)
Xử lý giao tác
Controller BankAccount AccountView SummaryView
deposit()
setChanged()
notifyObservers()
update()
update()
getBalance()
getBalance()
Cop
yr
Vai trò Observer
Observer pattern cho phép lớp BankAccount
đánh thức nhiều views không cần thông tin
tối thiểu.
Observers có thể tự đăng ký với các chủ đề
của chúng. Không kèm theo chuỗi nào!
Các giao tác là nguyên nhân làm thiết kế này
đổ vỡ dưới các thông báo giả tạo!