- 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()
輸出
上述程式生成如下輸出 −
解釋
上述程式碼解釋了下載特定結果的過程。根據觀察者模式邏輯,每個物件都被視為觀察者。在事件被觸發時,它列印輸出。
廣告