日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

大话设计模式Python实现-观察者模式

發布時間:2024/4/17 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大话设计模式Python实现-观察者模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

觀察者模式(發布-訂閱模式 Publish Subscribe Pattern):定義了一種一對多的關系,讓多個觀察對象同時監聽一個主題對象,當主題對象狀態發生變化時會通知所有觀察者,是它們能夠自動更新自己

下面是觀察者模式的一個demo:?

1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 __author__ = 'Andy' 5 6 """ 7 大話設計模式 8 設計模式——觀察者模式 9 觀察者模式又叫做發布-訂閱模式 (Publish Subscribe Pattern):定義了一種一對多的關系,讓多個觀察對象同時監聽一個主題對象,當主題對象狀態發生變化時會通知所有觀察者,是它們能夠自動更新自己 10 使用場景:當一個對象的改變需要同時改變其他對象的時候,而且它不知道具體有多少對象待改變 11 """ 12 13 #抽象通知者類 14 class Subject(object): 15 16 def attach(self, observer): 17 pass 18 19 def detach(self,observer): 20 pass 21 22 def notify(self): 23 pass 24 25 26 #具體通知者類 27 class Boss(Subject): 28 29 def __init__(self): 30 self.observer_list = [] 31 self.subject_status = '' 32 33 def attach(self, observer): 34 self.observer_list.append(observer) 35 36 def detach(self,observer): 37 self.observer_list.remove(observer) 38 39 def notify(self): 40 for item in self.observer_list: 41 item.update() 42 43 #抽象觀察者類 44 class Observer(object): 45 46 def __init__(self, name, publish): 47 self.name = name 48 self.publish = publish 49 50 def update(self): 51 pass 52 53 #具體觀察者類-看股票的人 54 class StockObserver(Observer): 55 56 def update(self): 57 print self.publish.subject_status,self.name,'關閉股票行情,繼續工作' 58 59 60 #具體觀察者類-看NBA的人 61 class NbaObserver(Observer): 62 63 def update(self): 64 print self.publish.subject_status,self.name,'關閉NBA,繼續工作' 65 66 67 if __name__ == "__main__": 68 publisher = Boss() 69 stocker = StockObserver('Andy',publisher) 70 nbaer = NbaObserver('Tracy',publisher) 71 publisher.attach(stocker) 72 publisher.attach(nbaer) 73 publisher.subject_status = '本老板回來了' 74 publisher.notify()

上面類的設計如下圖:

將一個系統分割成一系列相互協作的類有一個很不好的副作用,那就是需要維護相關對象間的一致性,我們不希望為了維持一致性而使各類緊密耦合,這樣會給維護,擴展和重用都帶來不便

觀察者模式所做的工作其實就是在解除耦合,讓耦合的雙方都依賴于抽象而不是依賴于具體,從而使得各自的變化都不影響另一邊的變化

?


作者:Andy
出處:http://www.cnblogs.com/onepiece-andy/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

轉載于:https://www.cnblogs.com/onepiece-andy/p/python-publish-subscribe-pattern.html

總結

以上是生活随笔為你收集整理的大话设计模式Python实现-观察者模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。