Thiết kế phần mềm hướng đối tượng OBSERVER PATTERN

16 381 2
Thiết kế phần mềm hướng đối tượng OBSERVER PATTERN

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH KHOA CƠNG NGHỆ THƠNG TIN OBSERVER PATTERN Mơn: Thiết kế phần mềm hướng đối tượng GVHD: Nguyễn Trần Thi Văn NHÓM 10 Nội dung  Observer Parttern gì?  Khi dùng Observer Pattern ?  Cấu trúc mẫu  Ưu - nhược điểm  Các mẫu liên quan  Ứng dụng  Demo Bài toán đặt ?$ Bài toán đặt Bank Account Observer Parttern gì?  Tên: Observer (Behavioral)  Mục đích: Mẫu định nghĩa mối phụ thuộc - nhiều đối tượng để mà đối tượng có thay đổi trạng thái, tất thành phần phụ thuộc thơng báo cập nhật cách tự động  Tên khác: Dependents, Publish-Subscribe Khi dùng Observer ?  Sử dụng mẫu Observer trường hợp sau đây: • Khi bạn muốn đối tượng liên lạc với • Khi đối tượng thơng điệp đối tượng đăng ký lắng nghe thơng điệp phản ứng lại với thơng điệp Cấu trúc notify() SUBJECT OBSERVER register() Cấu trúc class Observ er Patte Subject + + + Attach(Observer) Detach(Observer) Notify() +observers Observer ConcreteSubj ect - subjectState + + GetState() SetState() + for all in observers { o->Update() } +subject return subjectState Update() ConcreteObserv er - observerState + Update() Nguồn: “Design Patterns: Elements of Reusable Object-Oriented Software” - Gang of Four observerState = subject->GetState() Cấu trúc class Observ er Patter Subj ect + observerCollection + + + registerObserver(Observer) : void removeObserver(Observer) : void notifyObserver() : void «interface» Observ er + update() notifyObserv er() for obsev er onObserv erCollection call observ er.update() ConcreteObserv er + + update() //other observer spefic method() Cấu trúc Nguồn: “Design Patterns: Elements of Reusable Object-Oriented Software” - Gang of Four 10 EmailObserver Giải toán với observer Subject Account Register Notify Remove 11 MobileObserver Ưu điểm mẫu  Subject observers sửa đổi cách độc lập  Đối tượng tái sử dụng mà khơng cần sử dụng lại observers, ngược lại  Observers thêm vào mà khơng sửa đổi subject hay Observers khác 12 nhược điểm mẫu  Một hoạt động dường vô hại đối tượng gây loạt cập nhật cho observer đối tượng phụ thuộc  Các tiêu chí phụ thuộc khơng xác định rõ trì thường dẫn đến cập nhật giả mạo, khó theo dõi  Khơng có giao thức bổ sung để giúp observer khám phá thay đổi 13 Ứng dụng  Observer pattern hay sử dụng trường hợp sau:  Xử lí với Event: Java Swing Net sử dụng Observer pattern để xử lí event giao diện Các event Delegate hoạt động Subject Observer  Mơ hình MVC: Trong mơ hình MVC View tương ứng Observer, Model Subject  Ví dụ  Tin nhắn khuyến nhà mạng di động  Tính theo dõi mạng xã hội: Facebook, Youtube,… 14 Các mẫu liên quan  Mediator: cách đóng gói cập nhật ngữ cảnh phức tạp, ChangeManager hoạt động đối tượng Mediator đối tượng Observer  Singleton: ChangeManager Singleton để trở nên truy cập toàn cục 15 Demo class DemoObserv Subject Observer + doSomeThing(double, double) : void MobileObserv er - concreteAccount: ConcreteAccount + + MobileObserver(ConcreteAccount) doSomeThing(double, double) : void EmailObserv er - concreteAccount: ConcreteAccount + + EmailObserver(ConcreteAccount) doSomeThing(double, double) : void + + + Register(Observer) : void Remove(Observer) : void notifyAllObserver(double) : void -concreteAccount ConcreteAccount + + + + -concreteAccount + + + + observers: ArrayList = new ArrayList() balance: double ConcreteAccount(double) notifyAllObserver(double) : void Register(Observer) : void Remove(Observer) : void getBalance() : double setBalance(double) : void transfer(double) : void 16 ... Dependents, Publish-Subscribe Khi dùng Observer ?  Sử dụng mẫu Observer trường hợp sau đây: • Khi bạn muốn đối tượng liên lạc với • Khi đối tượng thơng điệp đối tượng đăng ký lắng nghe thông điệp... of Four observerState = subject->GetState() Cấu trúc class Observ er Patter Subj ect + observerCollection + + + registerObserver (Observer) : void removeObserver (Observer) : void notifyObserver()... MobileObserver Ưu điểm mẫu  Subject observers sửa đổi cách độc lập  Đối tượng tái sử dụng mà không cần sử dụng lại observers, ngược lại  Observers thêm vào mà không sửa đổi subject hay Observers

Ngày đăng: 25/02/2019, 22:25

Từ khóa liên quan

Mục lục

  • Slide 1

  • Nội dung

  • Bài toán đặt ra

  • Bài toán đặt ra

  • Observer Parttern là gì?

  • Khi nào dùng Observer ?

  • Cấu trúc

  • Cấu trúc

  • Cấu trúc

  • Cấu trúc

  • Giải quyết bài toán với observer

  • Ưu điểm của mẫu

  • nhược điểm của mẫu

  • Ứng dụng

  • Các mẫu liên quan

  • Demo

Tài liệu cùng người dùng

Tài liệu liên quan