[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

Bài đăng phổ biến từ blog này

Property trong Objective-C

Quản lý bộ nhớ trong Objective-C

Optional trong Swift