唐山网站建设优化,做简历用哪个网站,wordpress按钮插件,计算机专业毕业设计做什么好观察者模式常常用于以下场景#xff1a;事件驱动系统#xff1a;当事件发生时#xff0c;通知所有对该事件感兴趣的观察者。发布/订阅模型#xff1a;一个主题#xff08;发布者#xff09;可以有多个订阅者#xff08;观察者#xff09;#xff0c;当主题发生改变时事件驱动系统当事件发生时通知所有对该事件感兴趣的观察者。发布/订阅模型一个主题发布者可以有多个订阅者观察者当主题发生改变时通知所有订阅者。GUI编程当GUI组件状态发生改变时通知对该组件感兴趣的观察者例如当用户单击按钮时可以通知所有与该按钮关联的处理程序。消息队列系统在消息队列系统中观察者模式用于订阅者从队列中获取消息的方式当消息可用时通知所有订阅者。总之观察者模式适用于任何需要多个对象之间协作的场景以便在对象之间保持松散耦合。下面是一个简单的观察者模式的示例代码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)class Observer:def update(self, message):print(fReceived message: {message})subject Subject()
observer1 Observer()
observer2 Observer()subject.attach(observer1)
subject.attach(observer2)subject.notify(Hello world)subject.detach(observer1)subject.notify(Goodbye)执行过程如下定义了一个 Subject 主题类其中包含了一组观察者 _observers以及 attach()、detach() 和 notify() 方法用于添加、删除观察者和通知观察者。定义了一个 Observer 观察者类其中包含了一个 update() 方法用于处理接收到的通知消息。创建了一个 Subject 实例 subject 和两个 Observer 实例 observer1 和 observer2。调用 subject.attach(observer1) 和 subject.attach(observer2) 将观察者注册到主题中。调用 subject.notify(Hello world) 向所有已注册的观察者发送消息观察者会调用自己的 update() 方法进行处理。调用 subject.detach(observer1) 将 observer1 观察者从主题中删除。调用 subject.notify(Goodbye) 向所有已注册的观察者发送消息但是 observer1 不会收到该消息只有 observer2 会调用自己的 update() 方法进行处理。