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

歡迎訪問 生活随笔!

生活随笔

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

python

python设计模式-观察者

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

定義:

  定義對象間的一種一對多的依賴關系,當一個對象的狀態發生改變時,所有依賴的對象都會得到通知并被自動更新。

  觀察者模式是對象的行為模式,又叫發布-訂閱(pubish/subscribe)模式,模型-視圖(Model/View模式),源-監聽器(Source/Listener)模式或從屬者(Dependents)模式。

角色:

  抽象主題,具體主題(發布者), 抽象觀察者,具體觀察者(訂閱者)

適用場景:

    當一個抽象模型有兩個方面,其中一個方面依賴于另一個方面.將兩者封裝在獨立的對象中以使它們各自獨立的改變和復用

? ? ? ? ? ? ? ?當一個對象的改變需要同時改變其他對象,而且不知道具體有多少對象以待改變

???????????????當一個對象必須通知其他對象,而又不知道其他對象是誰,即這些對象之間是解耦的

優點:

  目標與觀察者之間的耦合最小

缺點:

  多個觀察者之間互不知道對方的存在,因此一個觀察者對主題的修改可能造成錯誤的更新


?

好, 概念說完來實際場景,以我目前公司業務為背景,產品上線后經常會收到用戶反饋bug。那么通常由運營同事收集bug-》開發修復bug-》測試驗證bug-》運維發布新版本到線上

直接上代碼:

class OBperson():'抽象觀察者'def updata(self):passclass TestOB(OBperson):'具體觀察者'def updata(self):print('I am tester, Verification bug')class Devob(OBperson):'具體觀察者'def updata(self):print('i am developing , Fix bug')class Announcerob(OBperson):'具體觀察者'def updata(self):print('i am announcer, release new version')class OBperation():'具體發布者'def __init__(self):self.__observers = []def collect_bug(self):print('Number of bugs collected : ')self.notifyObserver()def addOBserver(self, observer):self.__observers.append(observer)def removeOBserver(self, observer):self.__observers.remove(observer)def notifyObserver(self):for ob in self.__observers:ob.updata()if __name__ == '__main__':p = OBperation()p.addOBserver(Devob())p.addOBserver(TestOB())p.addOBserver(Announcerob())p.collect_bug()

?

運行結果:

?

?設計要點:

  被觀察者至少需要有三個方法:添加監聽者, 移除監聽者, 通知OBserver的方法,觀察者至少要有一個方法:更新方法,更新當前內容,

并作出相應處理

推模型和拉模型:

  觀察者模式根據其側重的功能還可以分為推模型和拉模型。

  推模型:被觀察者對象向觀察者推送主題的詳細信息,不管觀察者是否需要,推送的信息通常是主題對象的全部或部分數據。一般這種模型的實現中,會把被觀察者對象中的全部或部分信息通過 update 的參數傳遞給觀察者 [update(Object obj) ,通過 obj 參數傳遞]。

  拉模型:被觀察者在通知觀察者的時候,只傳遞少量信息。如果觀察者需要更具體的信息,由觀察者主動到被觀察者對象中獲取,相當于是觀察者從被觀察者對象中拉數據。一般這種模型的實現中,會把被觀察者對象自身通過 update 方法傳遞給觀察者 [update(Observable observable ),通過 observable 參數傳遞 ],這樣在觀察者需要獲取數據的時候,就可以通過這個引用來獲取了。

?

轉載于:https://www.cnblogs.com/zztxiaodeng/p/10777331.html

總結

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

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

主站蜘蛛池模板: 久久97视频 | 大地资源高清播放在线观看 | 国产欧美综合一区 | 国产精品免费大片 | 国产女人在线视频 | 男人天堂国产 | 在线免费观看视频 | 伊人影院在线视频 | 欧洲av一区二区三区 | 尤物在线观看视频 | 67194成人在线观看 | 不卡中文av | 无套中出丰满人妻无码 | 欧美人妻日韩精品 | 久久久国产精品无码 | 狠狠的干狠狠的操 | 日本女v片 | 麻豆网站在线看 | 偷拍夫妻性生活 | 日本激情一区二区 | www.xxx日韩| 婷婷婷色 | 少妇丰满尤物大尺度写真 | 九一亚色 | 国产一区二区a | 91视频国产一区 | 12av在线| 超碰97av在线 | 欧美粗大猛烈老熟妇 | 国产成人一区在线观看 | 国产r级在线 | 亚洲综合在线视频 | 亚洲成人黄色在线观看 | 日韩精品视频在线播放 | 国产精品一区在线播放 | 丰满少妇大力进入 | 天天狠狠 | 欧美一级淫片免费视频黄 | 中文字幕亚洲一区 | 牛av在线| 粗大的内捧猛烈进出在线视频 | 91天堂素人 | 日本三级视频 | 草在线 | 图书馆的女友在线观看 | 国产精品熟妇人妻g奶一区 a少妇 | 日日色av | 福利片第一页 | 丝袜ol美脚秘书在线播放 | www.白丝 | 北条麻妃一二三区 | 亚洲综合一区在线观看 | 国产av一区二区三区传媒 | 午夜免费在线 | 精品黑人一区二区三区国语馆 | av电影中文字幕 | av在线短片| 久久国产精品无码网站 | 亚州男人的天堂 | 香蕉在线看 | av网站在线免费观看 | 黄黄的视频在线观看 | 精品在线视频免费观看 | 天堂av一区 | 国产精品成人免费视频 | 潘金莲一级淫片aaaaa | 泰剧19禁啪啪无遮挡 | 色噜噜日韩精品欧美一区二区 | 久久久久亚洲AV成人无在 | 国产女人18毛片水真多 | 亚洲欧美另类国产 | 国产午夜在线 | 亚洲精品视频在线免费 | 日免费视频 | 天天干精品| 日韩有码一区二区三区 | 午夜小电影 | 极品美女无套呻吟啪啪 | 狠狠婷 | 日韩亚射吧 | 豆花在线观看 | 欧美一区二区三区婷婷 | 日韩久久不卡 | 狠狠热视频 | 日本少妇久久久 | jizz精品| 伊人青青久| 亚洲人和日本人hd | 女同在线观看 | 高清日韩一区二区 | 日日日干干干 | 亚洲社区一区二区 | 国产精品久久国产愉拍 | 日本91网站 | 西川结衣在线观看 | 欧美黄大片| 爱情岛论坛亚洲品质自拍视频 | 男人激情网 | 中文字字幕一区二区三区四区五区 |