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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

设计模式——————观察者模式

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

工廠模式分為簡單工廠,工廠和抽象工廠,三種工廠的實現是越來越復雜的。

觀察者模式

? ? ? 本質上就是一種訂閱/發布的模型,從邏輯上來說就是一對多的依賴關系

? ? ? 什么意思呢?好比是一群守衛盯著一個囚犯,只要囚犯一有異動,守衛就必須馬上采取行動(也有可能是更新狀態,本質上也是一種行動),那么守衛就是觀察者,囚犯就是被觀察者。

? ? ? 解決的問題:

? ? ? 在系統中,實現這種一對多的而且之間有一定關聯的邏輯的時候,由于需要保持他們之間的協同關系,所以最簡便的方法是采用緊耦合。但是這樣加大了開發難度,很容易造成Bug

? ?? 觀察者模式就解決了這么一個問題,在保持一系列觀察者和被觀察者對象協同工作的同時,把之間解耦了。

? ??

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

主要解決:一個對象狀態改變給其他對象通知的問題,而且要考慮到易用和低耦合,保證高度的協作。

何時使用:一個對象(目標對象)的狀態發生改變,所有的依賴對象(觀察者對象)都將得到通知,進行廣播通知。

如何解決:使用面向對象技術,可以將這種依賴關系弱化。

關鍵代碼:在抽象類里有一個 ArrayList 存放觀察者們。

應用實例:?1、京東上某個商品暫時沒貨,提示用戶關注后到貨通知,這個暫時無貨的商品是被觀察者,點擊關注這個商品的用戶就是觀察者。 2、老師針對成績在60分以下的同學定期發送最新的考題分析郵件,每輪考試下來都會有不及格的同學,由不及格變為及格的同學自動從郵件列表里移除,新的不及格的同學會被加進郵件列表里。

優點:?1、觀察者和被觀察者是抽象耦合的。 2、建立一套觸發機制。

缺點:?1、如果一個被觀察者對象有很多的直接和間接的觀察者的話,將所有的觀察者都通知到會花費很多時間。 2、如果在觀察者和觀察目標之間有循環依賴的話,觀察目標會觸發它們之間進行循環調用,可能導致系統崩潰。 3、觀察者模式沒有相應的機制讓觀察者知道所觀察的目標對象是怎么發生變化的,而僅僅只是知道觀察目標發生了變化。

使用場景:?1、有多個子類共有的方法,且邏輯相同。 2、重要的、復雜的方法,可以考慮作為模板方法。

轉載于:https://www.cnblogs.com/FMOON/p/8934079.html

總結

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

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