Python 设计模式-观察者模式

观察者模式是一种行为设计模式,它允许你定义一种订阅机制,可以在对象事件发生时通知多个观察者对象。下面是一个简单的Python观察者模式代码示例:

class Subject:
"""
被观察者类,维护观察者列表,并在状态发生改变时通知观察者
"""
def __init__(self):
self._observers = set()
def attach(self, observer):
"""
将观察者添加到观察者列表中
"""
self._observers.add(observer)
def detach(self, observer):
"""
将观察者从观察者列表中移除
"""
self._observers.remove(observer)
def notify(self, message):
"""
通知所有观察者,传递消息
"""
for observer in self._observers:
observer.update(message)
class Observer:
"""
观察者类,定义一个update方法,当被观察者发生变化时被调用
"""
def update(self, message):
pass
class ConcreteObserver(Observer):
"""
具体观察者类,实现update方法,当被观察者发生变化时打印消息
"""
def update(self, message):
print(f"Received message: {message}")
if __name__ == '__main__':
subject = Subject()
observer_1 = ConcreteObserver()
observer_2 = ConcreteObserver()
subject.attach(observer_1)
subject.attach(observer_2)
subject.notify("Hello, observers!")

在上面的代码中,我们定义了一个被观察者类Subject和一个观察者类ObserverSubject维护了一个观察者列表_observers,并提供了attachdetachnotify方法来添加、移除和通知观察者。Observer定义了一个update方法,当被观察者发生变化时被调用。

我们还定义了一个具体观察者类ConcreteObserver,它实现了update方法,当被观察者发生变化时打印消息。

main函数中,我们创建了一个被观察者对象subject和两个观察者对象observer_1observer_2,并将它们添加到被观察者对象的观察者列表中。最后,我们调用subject.notify方法,通知所有观察者对象,并传递了一个消息。观察者对象收到消息后,会执行自己的逻辑,这里我们只是简单地打印了一条消息。

posted @   katsute_不语  阅读(119)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示