国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

觀察者模式

魏憲會 / 572人閱讀

摘要:細思不恐主旨在設計模式中,觀察者模式的主旨則是定義對象間的一種一對多的依賴關系,當一個對象的狀態發生改變時,所有依賴于它的對象都得到通知并被自動更新。

簡單說兩句

觀察者模式,是對象行為型模式中的一種,有的時候人們也叫他發布/訂閱模式。當我們需要在一個對象狀態改變的時候通知到其它對象,這時候就可以考慮一下觀察者模式。

細思不恐

主旨

在設計模式中,觀察者模式的主旨則是定義對象間的一種一對多的依賴關系,當一個對象的狀態發生改變時,所有依賴于它的對象都得到通知并被自動更新。

解惑

在上面我們說到,有時觀察者模式也稱發布/訂閱模式,那到底有啥區別呢?其實發布訂閱模式是處于廣義上的觀察者模式,因為他是最常用的一種觀察者模式的實現。

發布訂閱模式相對觀察者多了一個事件的通道,因為在觀察者模式中,觀察者(Observer)需要直接訂閱目標(Subject)事件,在目標發出內容更改事件時,直接接收內容事件并做出響應。在發布訂閱模式中訂閱者需要從時間的通道中訂閱事件,這樣從發布者接收事件以及向訂閱者發布事件,兩者并沒有產生依賴的關系。

具體代碼上的區別,有興趣的朋友可以在下方留言,下次可以出一個小分支。

實現方式

在上面的介紹中,我們大概知道了在觀察者模式中,有這么兩種主角色:

Subject(被觀察者)

被觀察者必須要有添加觀察者、刪除觀察者和提醒觀察者的方法。

Observer(觀察者)

觀察者要有更新方法,用來做出響應在狀態改變調用提醒方法后。

Java中已經提供了觀察者模式的實現,我們不需要再定義觀察者和目標接口(被觀察者),也不需要維護觀察者的注冊信息。可以繼承Observable類實現被觀察者目標對象,實現Observer接口完成具體的觀察者對象,其中提供了update方法獲取相應事件信息。

在這里為了方便說明觀察者的基本原理,自己實現一個簡單的案例。

首先抽象一個觀察者類,里面有一個抽象方法更新狀態。

public abstract class Oberver{
    public abstract void Update();
}

然后再寫一個抽象被觀察者類。

public abstract class Subject{
    //增加  
    public abstract void Attach(Observer observer);  
    //移除  
    public abstract void Detach(Observer observer);  
    //通知  
    public abstract void Notify();
}

具體上面兩個類:

//具體的觀察者  
public class ConcreteObserver  extends Observer{  

    @Override  
    public void Update() {
        System.out.println("狀態改變,更新狀態");  
    }
}  

//具體被觀察者類  
public class ConcreteSubject extends Subject {  
      
    //定義集合存儲觀察者  
    List list=new ArrayList();  
      
    //增加觀察者
    @Override  
    public void Attach(Observer observer) {  
        list.add(observer);  
    }  
  
    @Override  
    public void Detach(Observer observer) {  
        list.add(observer);  
    }  
  
    @Override  
    public void Notify() {  
        //遍歷集合觀察者對象  
        for(Observer observer:list){  
            observer.Update();  
        }
    }  
}  

接下來我們就可以寫測試類了:

public class ObserverDemo {  
    public static void main(String[] args) { 
    
        //創建被觀察者對象  
        ConcreteSubject csb=new ConcreteSubject();  
        //創建觀察者對象
        ConcreteObserver cob=new ConcreteObserver();  
          
        //將觀察者添加到被觀察者的通知名單內  
        csb.Attach(cob);  
          
        //被觀察者發出通知,觀察者接受通知更新狀態  
        csb.Notify();  
    }  
} 

//輸出
“狀態改變,更新狀態”

就這樣,一個簡單的觀察者模式的案例就結束了。當然一個復雜的應用中,我們肯定需要一個完整而且適用與多線程以及異步系統,因為觀察者模式大都應用與這兩中系統,所以也需要考慮線程安全的問題。下次會介紹更加詳細完整的觀察者的實現方式。

寫在最后

因為每一篇的篇幅不宜過長,所以本打字員盡量在精簡自己所寫的內容,盡量能夠多容擴一些知識點,但是具體的知識橫向擴展可能就有一點欠缺,這也算是對自己的一種鍛煉,希望大家能夠一起進步,怎么樣,在下面留個言吐槽一下本渣渣吧。(逃

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/68859.html

相關文章

  • 設計模式察者設計模式

    摘要:關鍵概念理解觀察者設計模式中主要區分兩個概念觀察者指觀察者對象,也就是消息的訂閱者被觀察者指要觀察的目標對象,也就是消息的發布者。 原文首發于微信公眾號:jzman-blog,歡迎關注交流! 最近補一下設計模式相關的知識,關于觀察者設計模式主要從以下幾個方面來學習,具體如下: 什么是觀察者設計模式 關鍵概念理解 通知觀察者的方式 觀察者模式的實現 觀察者模式的優缺點 使用場景 下面...

    NotFound 評論0 收藏0
  • 設計模式察者模式與發布訂閱模式

    摘要:觀察者模式與發布訂閱的區別在模式中,知道,同時還保留了的記錄。發布者訂閱者在大多情況下是異步方式使用消息隊列。圖片源于網絡侵權必刪如果以結構來分辨模式,發布訂閱模式相比觀察者模式多了一個中間件訂閱器,所以發布訂閱模式是不同于觀察者模式的。 學習了一段時間設計模式,當學到觀察者模式和發布訂閱模式的時候遇到了很大的問題,這兩個模式有點類似,有點傻傻分不清楚,博客起因如此,開始對觀察者和發布...

    BaronZhang 評論0 收藏0
  • 設計模式 -- 察者模式

    摘要:總結一下從表面上看觀察者模式里,只有兩個角色觀察者被觀察者而發布訂閱模式,卻不僅僅只有發布者和訂閱者兩個角色,還有第三個角色經紀人存在。參考鏈接觀察者模式發布訂閱模式 做了這么長時間的 菜鳥程序員 ,我好像還沒有寫過一篇關于設計模式的博客...咳咳...意外,純屬意外。所以,我決定,從這一刻起,我要把設計模式在從頭學習一遍,不然都對不起我這 菜鳥 的身份。那這次,就從觀察者模式開始好啦...

    chengtao1633 評論0 收藏0
  • 設計模式 -- 察者模式

    摘要:總結一下從表面上看觀察者模式里,只有兩個角色觀察者被觀察者而發布訂閱模式,卻不僅僅只有發布者和訂閱者兩個角色,還有第三個角色經紀人存在。參考鏈接觀察者模式發布訂閱模式 做了這么長時間的 菜鳥程序員 ,我好像還沒有寫過一篇關于設計模式的博客...咳咳...意外,純屬意外。所以,我決定,從這一刻起,我要把設計模式在從頭學習一遍,不然都對不起我這 菜鳥 的身份。那這次,就從觀察者模式開始好啦...

    makeFoxPlay 評論0 收藏0
  • 訂閱發布模式察者模式的區別

    摘要:或許以前認為訂閱發布模式是觀察者模式的一種別稱,但是發展至今,概念已經有了不少區別。參考文章訂閱發布模式和觀察者模式真的不一樣 首選我們需要先了解兩者的定義和實現的方式,才能更好的區分兩者的不同點。 或許以前認為訂閱發布模式是觀察者模式的一種別稱,但是發展至今,概念已經有了不少區別。 訂閱發布模式 在軟件架構中,發布-訂閱是一種消息范式,消息的發送者(稱為發布者)不會將消息直接發送給特...

    ysl_unh 評論0 收藏0
  • 我的Java設計模式-察者模式

    摘要:為了幫助灰太狼擺脫被老婆平底鍋抽的悲劇,發起了解救灰太狼的行動,必須要知道觀察者模式。持有觀察者對象的集合。設計模式源碼下載 相信大家都有看過《喜洋洋與灰太狼》,說的是灰太狼和羊族的斗爭,而每次的結果都是灰太狼一飛沖天,伴隨著一句我還會回來的......。為灰太狼感到悲哀,抓不到羊,在家也被老婆平底鍋虐待。灰太狼為什么會這么背? 很簡單,灰太狼本身就有暴露行蹤的屬性,羊咩咩就能知曉灰太...

    smartlion 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<