Observer định nghĩa quan hệ một–nhiều: một subject giữ danh sách các observer và tự động thông báo cho tất cả khi trạng thái của nó thay đổi. Observer đăng ký (subscribe) / hủy đăng ký; subject không cần biết chi tiết observer, chỉ gọi qua một interface chung → decoupling.
Luồng: observer subscribe vào subject → subject có thay đổi → gọi notify() → mỗi observer nhận update() và tự xử lý.
Ứng dụng thực tế:
- Event listener trên UI (DOM addEventListener), hệ thống event/callback.
- Reactive state: RxJS observable, các store phát thay đổi cho component (React re-render khi state đổi).
- Pub/Sub trong ứng dụng (biến thể có message broker ở giữa).
Lưu ý: coi chừng memory leak nếu quên hủy đăng ký, và thứ tự/độ sâu thông báo khi observer lại kích hoạt thay đổi khác.