
- 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()
輸出
上述程式生成如下輸出 −

解釋
上述程式碼解釋了下載特定結果的過程。根據觀察者模式邏輯,每個物件都被視為觀察者。在事件被觸發時,它列印輸出。
廣告