Python 设计模式-观察者模式
1.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
和一个观察者类Observer
。Subject
维护了一个观察者列表_observers
,并提供了attach
、detach
和notify
方法来添加、移除和通知观察者。Observer
定义了一个update
方法,当被观察者发生变化时被调用。
我们还定义了一个具体观察者类ConcreteObserver
,它实现了update
方法,当被观察者发生变化时打印消息。
在main
函数中,我们创建了一个被观察者对象subject
和两个观察者对象observer_1
和observer_2
,并将它们添加到被观察者对象的观察者列表中。最后,我们调用subject.notify
方法,通知所有观察者对象,并传递了一个消息。观察者对象收到消息后,会执行自己的逻辑,这里我们只是简单地打印了一条消息。
合集:
Python 设计模式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通