觀察者模式是一種行為設計模式,它定義了一種一對多的依賴關系,讓多個觀察者對象同時監聽某一個主題對象,當主題對象狀態發生變化時,會通知所有觀察者對象,使它們能夠自動更新。
在 Python 中,觀察者模式通常由兩個主要角色組成:
1. **主題(Subject)**:主題對象維護一組觀察者對象,并提供方法來注冊、刪除和通知觀察者對象。
2. **觀察者(Observer)**:觀察者對象監聽主題對象的狀態變化,并在主題對象狀態發生變化時接收通知并做出相應的更新。
Python 中實現觀察者模式:
```python
class Subject:
? ? def __init__(self):
? ? ? ? self._observers = []
? ? def register_observer(self, observer):
? ? ? ? self._observers.append(observer)
? ? def unregister_observer(self, observer):
? ? ? ? self._observers.remove(observer)
? ? def notify_observers(self, message):
? ? ? ? for observer in self._observers:
? ? ? ? ? ? observer.update(message)
class Observer:
? ? def update(self, message):
? ? ? ? print(f"Received message: {message}")
# 創建主題對象
subject = Subject()
# 創建觀察者對象
observer1 = Observer()
observer2 = Observer()
# 注冊觀察者
subject.register_observer(observer1)
subject.register_observer(observer2)
# 主題對象狀態變化,通知觀察者
subject.notify_observers("Hello, observers!")
```
示例中,Subject 類代表主題對象,Observer 類代表觀察者對象。當主題對象狀態發生變化時,調用 notify_observers() 方法通知所有注冊的觀察者對象,觀察者對象接收到通知后調用 update() 方法進行更新操作。
觀察者模式可以幫助實現對象之間的松耦合,使主題對象和觀察者對象之間的關系更加靈活。通過這種方式,可以實現事件驅動的編程模式,提高代碼的可維護性和擴展