Table of Contents
Tạo một hệ thống thông báo linh hoạt là thiết yếu cho ứng dụng phần mềm hiện đại. Mô hình quan sát, mô hình thiết kế phần mềm, cung cấp một giải pháp thanh lịch để thực hiện các hệ thống như thế bằng Python. Nó cho phép các đối tượng đăng ký và nhận cập nhật từ các đối tượng khác một cách năng động, khuyến khích sự kết hợp lỏng lẻo và tính dễ dàng.
Hiểu gương mẫu của người quan sát
Mô hình watchr xác định một phụ thuộc một đến nhiều giữa các đối tượng. Khi tình trạng của một đối tượng (chủ thể) thay đổi, tất cả phụ thuộc (máy chủ) đều được tự động thông báo. Mẫu này đặc biệt hữu ích để thực hiện việc xử lý hệ thống, như thông báo, nơi có nhiều thành phần cần phản ứng với thay đổi.
Thi hành mẫu trong Python
Trong Python, mẫu watchr có thể được thực hiện bằng các lớp học và phương pháp. Chủ đề này duy trì danh sách các nhà quan sát và cung cấp các phương pháp gắn kết, tách rời và thông báo chúng. Những người quan sát thực hiện một giao diện chung để nhận cập nhật.
Tạo lớp học chủ đề
Lớp người chủ đề quản lý một danh sách những người quan sát và cung cấp phương pháp để sửa đổi và thông báo cho họ.
class Subject:
def __init__(self):
self.observers = []
def attach(self, observer):
self.observers.append(observer)
def detach(self, observer):
self.observers.remove(observer)
def notify(self, message):
for observer in self.observers:
observer.update(message)
Tạo giao diện quan sát
Những người quan sát cần thực hiện một phương pháp cập nhật để xử lý thông báo.
class Observer:
def update(self, message):
raise NotImplementedError("Subclass must implement update method")
Những người quan sát đặc biệt
Các nhà quan sát cụ thể định nghĩa phản ứng cụ thể đối với thông báo, chẳng hạn như in một thông điệp hoặc cập nhật một giao diện người dùng.
class EmailNotification(Observer):
def update(self, message):
print(f"Sending email notification: {message}")
class LogNotification(Observer):
def update(self, message):
print(f"Logging message: {message}")
Dùng hệ thống thông báo
Để sử dụng hệ thống, hãy tạo một chủ đề, gắn kết các quan sát và gửi thông báo. Thiết lập này cho phép thêm hay gỡ bỏ những người quan sát một cách năng động.
# Create subject
notification_center = Subject()
# Create observers
email_alert = EmailNotification()
log_alert = LogNotification()
# Attach observers
notification_center.attach(email_alert)
notification_center.attach(log_alert)
# Send a notification
notification_center.notify("New message received!")
Mô hình này đảm bảo rằng hệ thống thông báo của bạn linh hoạt và dễ mở rộng. Bạn có thể thêm các kiểu thông báo mới mà không cần sửa đổi mã đã có, theo nguyên tắc đóng cửa của thiết kế phần mềm.