观察者模式是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。
以下是一个简单的观察者模式示例:
- 定义观察者接口:定义一个观察者接口,其中包含一个更新方法。
- 定义具体观察者:实现观察者接口,定义具体的更新逻辑。
- 定义目标接口:定义一个目标接口,其中包含一个注册观察者和移除观察者方法。
- 定义具体目标:实现目标接口,维护一个观察者列表,并在状态改变时通知所有观察者。
示例代码
class Observer:
def update(self, message):
pass
class ConcreteObserver(Observer):
def update(self, message):
print(f"Observer received message: {message}")
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 ConcreteSubject(Subject):
def __init__(self):
super().__init__()
self._state = None
def set_state(self, state):
self._state = state
self.notify_observers(f"State changed to: {state}")
# 使用示例
subject = ConcreteSubject()
observer1 = ConcreteObserver()
observer2 = ConcreteObserver()
subject.register_observer(observer1)
subject.register_observer(observer2)
subject.set_state("New State")
# 图片
<center><img src="https://cloud-image.ullrai.com/q/design_pattern_observer_pattern/" alt="Observer Pattern Design Pattern"/></center>
更多关于设计模式的资料,请访问[设计模式概览](/docs/design_patterns_overview)。