Chương 11 — Observer Pattern

Observer pattern — giới thiệu

Observer pattern là gì?

Key idea 1: Cơ chế Publisher-Subscriber

Observer Pattern mô tả mối quan hệ một-nhiều giữa các object:

  • Khi một object thay đổi trạng thái, tất cả các object phụ thuộc vào nó sẽ được thông báo và cập nhật tự động.

Hai vai trò chính:

Vai trò Mô tả
Subject (Publisher) Object bị quan sát. Duy trì danh sách observers. Gửi thông báo khi thay đổi.
Observer (Subscriber) Object quan sát. Nhận thông báo và phản ứng tương ứng.

Key idea 2: Ví dụ thực tế

YouTube channel:

  • Khi kênh đăng video mới → tất cả subscribers nhận thông báo
  • Subscriber có thể hủy đăng ký bất kỳ lúc nào
  • Kênh không biết subscriber đang làm gì với thông báo

Đây chính xác là Observer Pattern.

Key idea 3: Khi nào nên dùng Observer?

Observer Pattern phù hợp trong các tình huống:

  • GUI frameworks: button click → cập nhật nhiều component khác nhau
  • MVC architecture: Model thay đổi → View tự cập nhật
  • Event-driven systems: HTTP request, user input
  • Distributed systems: Thay đổi ở một node → đồng bộ sang các node khác

Dấu hiệu cần dùng Observer:

Khi một class A phải “poll” (hỏi thường xuyên) class B để biết có thay đổi không — Observer giúp đảo chiều: B chủ động thông báo cho A.

Key idea 4: Lợi ích cốt lõi

  • Loose coupling: Subject không cần biết Observer là gì, chỉ biết interface
  • Mở rộng dễ dàng: Thêm Observer mới không cần sửa Subject
  • Thông báo đồng loạt: Một thay đổi kích hoạt nhiều phản ứng

Observer Pattern là nền tảng của nhiều framework hiện đại: React (state), Angular (reactive forms), RxJS, EventEmitter trong Node.js.

Đăng ký nhận Newsletter
Cập nhật bài viết mới nhất!