- Rất khó tái sử dụng phương thức này ₫ể tạo ram ột maze có ₫ặc ₫iểm khác (VD: maze trong ₫ó các phòng có thể có bom hoặc quà tặng, cửa giữa các phòng chỉ có
Ví dụ về mẫu Observer
Chương 11 : Các mẫu Creational
Spreadsheet BarChart PieChart
Database request, modification
thay ₫ổi, notification Lược ₫ồ cấu trúc của mẫu Observer forall o in observers o->Update(); observers Observer Update() Subject Attach(Observer) Detach(Observer) Notify() ConcreteObserver Update() observerState observerState = subject->GetState(); return subjectState(); ConcreteSubject GetState() SetState() subjectState
Bö mön Cöng nghï phền mï̀m Khoa CNTT
ĐH Bach Khoa Tp.HCM
Mön Phân tích & Thiết kế hướng ₫ối tượng dùng UML
Slide 349
Subject :
biết observer của nó. Có thể có nhiều observer quan sát 1 subject.
cung cấp interface ₫ể Attach va Detach các observer vào mình. Observer :
₫ịnh nghĩa interface hiệu chỉnh cho các ₫ối tượng mà sẽ₫ược cảnh báo ₫ể
hiệu chỉnh subject của mình. ConcreteSubject :
lưu trạng thái lưu ý tới các ₫ối tượng ConcreteObserver.
gởi cảnh báo tới các observer khi trạng thái của nó thay ₫ổi. Concretebserver :
duy trì tham khảo tới ₫ối tượng ConcreteSubject.
lưu trạng thái mà cần phải luôn nhất quán với subject của mình.
hiện thực interface hiệu chỉnh ₫ể giữ trạng thái luôn nhất quán với subject của mình.
Các phần tử tham gia
Chương 11 : Các mẫu Creational
Thường áp dụng mẫu State trong các trường hợp sau:
khi 1 sự trừu tượng có 2 khía cạnh phụ thuộc lẫn nhau. Bao ₫óng các khía cạnh này trong những ₫ối tượng ₫ộc lập giúp ta thay ₫ổi và dùng lại chúng
₫ộc lập.
khi việc thay ₫ổi ₫ối tượng này ₫òi hỏi phải thay ₫ổi các ₫ối tượng khác nhưng bạn không biết trước có bao nhiêu ₫ối tượng cần thay ₫ổi.
khi ₫ối tượng cần có khả năng cảnh báo các ₫ối tượng khác nhưng không muốn chúng ghép nối chặt với nhau.