[Nhóm Behavioral] Mẫu Observer
Mẫu OBSERVER
I. Khái niệm
Mẫu Observer là mẫu định
nghĩa một phụ thuộc 1 - nhiều giữa các đối tượng để khi một đối tượng thay đổi
trạng thái thì tất cả các phục thuộc của nó được nhận biết và cập nhật tự động.
Trong đó:
Subject: là một lớp trừu tượng, đóng vai trò 1
trong quan hệ 1-nhiều, có các hàm để gắn, tách và hàm thông báo đến các đối tượng Observer. Nó sẽ chứa danh sách các Observer có quan hệ với
nó.
ConcreteSubject: là lớp con kế thừa Subject để
trữ trạng thái của ConcreteObserver cần quan tâm. Đồng thời sẽ gửi tín hiệu đến
các observer của nó khi trạng thái của nó đã thay đổi.
Observer: định nghĩa một lớp trừu tượng cho thao
tác cập nhật các đối tượng mà sẽ nhận tín hiệu của sự thay đổi tại chủ thể
Subject, đóng vai trò nhiều trong quan hệ 1-nhiều.
ConcreteObserver: là lớp con kế thừa Observer
để override lại hàm cập nhật của Observer đẻ giữ các trạng thái cố định của nó.
Nó duy trì một tham chiếu tới một đối tượng ConcreteSubject. Đồng thơi lưu trữ
các trạng thái cố định.
II. Tần suất sử dụng
Cao
III. Ví dụ tình huống
Trong hệ thống hiển thị dữ liệu
giá vàng, cổ phiếu trên các thiết bị, môi trường khác nhau nhưng dùng chung một
CSDL, khi CSDL thay đổi, ta cần tất các các thiết bị, môi trường này phải cập
nhật lại ngay lập tức. Như vậy ta có các class như hình sau :
IV. Đút kết kinh nghiệm
- Mẫu Observer là 1 cách để
thông báo sự thay đổi từ một lớp đến nhiều lớp.
- Thường được sử dụng trong hướng
sự kiện: Delegate trong C#, Listener trong Java,…
Nguồn: LMinh
Nhận xét
Đăng nhận xét