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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

小菜学设计模式——观察者模式

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

2019獨角獸企業(yè)重金招聘Python工程師標準>>>


背景? ?

????上一次去看電影院看電影,半旁邊的妹子說只要掃一掃就能免費領取爆米花一份,你說我怎么躲得過妹子的招數呢?所以拿起我的手機,掃一掃,注冊會員,ok 領取爆米花。時間過去了,我發(fā)現我的手機怎么老是收到一些亂七八糟的信息,一旦有什么大小事我都會收到信息,你可知道我是拒絕的。恩,這里就說說,觀察者模式,因為我的手機號碼已經成為他們發(fā)消息的接收者,或說監(jiān)聽器、或說觀察者。


1、使用意圖? ?

????當一個對象改變的同時需要改變其他對象時,觀察者模式似乎很受用。


2、生活實例? ?

????飯點一到,所有同事包括我立刻放下手中的活,有看NBA的、有睡覺的,有直接去食堂排隊等飯吃的。似乎這里少了一個通知的過程,呵呵,不要緊。

3、Java 例子(框架、JDK 、JEE)

? ? 因為觀察者的本質就是監(jiān)聽器,所以使用監(jiān)聽器最多的當然是Swing或AWT,比如一個按鈕被點擊會觸發(fā)click事件,鼠標移動會觸發(fā)mouseover事件等,事件觸發(fā),就會通知對應觀察者(監(jiān)聽器)

4、模式類圖? ??

  • 抽象主題角色(Subject):定義一個接口,聲明作為主題角色應該具備的方法(對觀察者對象的增刪改之類的方法聲明)。

  • 主題角色(Concrete Subject):實現了抽象主題角色,實現了它的所有方法,并且含有一個抽象觀察者角色的集合引用作為成員變量,也就是說一個主題角色可以擁有多個觀察者。

  • 抽象觀察者角色(Observer):定義了一個接口,聲明最為觀察者角色應該具備的方法(這個方法是當觀察者收到通知后做出的反應,一般就是update)。

  • 具體觀察者角色(Concrete Observer):實現抽象觀察者角色,主要是實現接口中的update方法。


  • 5、模式優(yōu)點

    ? 觀察者模式:定義了一種一對多的依賴關系,讓多個觀察者對象同時監(jiān)聽某一個主題對象,這個主題對象在狀態(tài)發(fā)生變化時,會通知所有觀察者對象,是他們能夠自動更新自己。(也叫做 發(fā)布-訂閱模式)? ? 觀察者所做的工作其實就是解除耦合,讓耦合的雙方都依賴于抽象,而不是依賴于具體。從而使得各自的變化都不會影響另一邊的變化。


    6、與類似模式比較

    ? 觀察者模式是我們最常使用的設計模式之一,尤其是jQuery前端時,對于事件的注冊都是觀察者模式的一個淋漓盡致的體現。? ? 觀察者和其他模式的比較,感覺差距很大。




    轉載于:https://my.oschina.net/heweipo/blog/466249

    總結

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

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