- Python 设计模式教程
- Python 设计模式 - 主页
- 介绍
- Python 设计模式 - 要点
- 模型视图控制器模式
- Python 设计模式 - 单例
- Python 设计模式 - 工厂
- Python 设计模式 - 构建器
- Python 设计模式 - 原型
- Python 设计模式 - 外观
- Python 设计模式 - 命令
- Python 设计模式 - 适配器
- Python 设计模式 - 装饰器
- Python 设计模式 - 代理
- 责任链模式
- Python 设计模式 - 观察者
- Python 设计模式 - 状态
- Python 设计模式 - 策略
- Python 设计模式 - 模板
- Python 设计模式 - 享元
- 抽象工厂
- 面向对象
- 面向对象的概念实现
- Python 设计模式 - 迭代器
- 词典
- 列表数据结构
- Python 设计模式 - 集
- Python 设计模式 - 队列
- 字符串和序列化
- Python 中的并发
- Python 设计模式 - 反
- 异常处理
- Python 设计模式资源
- 快速指南
- Python 设计模式 - 资源
- 讨论
Python 设计模式 - 观察者
在此模式中,对象表示为等待事件触发的观察者。一旦指定的事件发生,观察者就会附着到主体上。当事件发生时,主体告诉观察者它已经发生了。
下面的 UML 图代表了观察者模式 -
如何实现观察者模式?
现在让我们看看如何实现观察者模式。
import threading import time import pdb class Downloader(threading.Thread): def run(self): print 'downloading' for i in range(1,5): self.i = i time.sleep(2) print 'unfunf' return 'hello world' class Worker(threading.Thread): def run(self): for i in range(1,5): print 'worker running: %i (%i)' % (i, t.i) time.sleep(1) t.join() print 'done' t = Downloader() t.start() time.sleep(1) t1 = Worker() t1.start() t2 = Worker() t2.start() t3 = Worker() t3.start()
输出
上述程序生成以下输出 -
解释
上面的代码解释了下载特定结果的过程。根据观察者模式逻辑,每个对象都被视为观察者。当事件被触发时,它会打印输出。