Bài giảng Phát triển phần mềm mã nguồn mở - Bài 4: MVC

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

pdf12 trang | Chia sẻ: thanhle95 | Lượt xem: 551 | Lượt tải: 1download
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!