行為型模式 觀察者模式

2021-08-20 14:44:51 字數 1835 閱讀 2601

物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。

subject

抽象的主題,被觀察的物件,提供

attach

和detach observer

物件的介面。

concretesubject

具體的被觀察物件,維持

concretesubject

狀態。當狀態發生變化時,傳送訊息通知它的觀察者。

observer

:抽象的觀察者,定義乙個傳送變化通知更新的介面。

concreteobserver

:具體觀察者,實現抽象觀察者定義的更新介面,以便在得到主題更改通知時更新自身的狀態。

觀察者模式特點:降低業務邏輯耦合,將主邏輯和非主邏輯分開。但如果觀察者比較多,可能會對系統的執行效率有影響,建議使用非同步方式操作。在觀察者模式中,觀察者一般不返回結果。

結構圖:

/// /// 移除觀察者物件

///

///

public void detach(msgobserver observer)

/// /// 通知觀察者物件

///

public void notify(string message)}}

}

namespace libraries.test.designpattern.observer

}

namespace libraries.test.designpattern.observer

/// /// 執行寫檔案日誌操作

///

///

public void update(string contact)}}

namespace libraries.test.designpattern.observer

/// /// 執行發郵件操作

///

///

public void update(string contact)}}

namespace libraries.test.designpattern.observer

/// /// 執行傳送簡訊操作

///

///

public void update(string contact)}}

namespace libraries.test.designpattern.observer

/// /// 執行傳送站內信操作

///

///

public void update(string contact)}}

namespace libraries.test.designpattern.observer}}

行為型模式 觀察者模式

抽象觀察者,及具體觀察者 class abstractobserver class student public abstractobserver virtual void dobadthing 老師沒來應該幹什麼 virtual void onteachercoming 老師來了應該幹什麼 pri...

十六 行為型模式 觀察者模式

一 觀察者模式 觀察者模式很好理解,類似於郵件訂閱和rss訂閱,當我們瀏覽一些部落格或wiki時,經常會看到rss圖示,就這的意思是,當你訂閱了該文章,如果後續有更新,會及時通知你。其實,簡單來講就一句話 當乙個物件變化時,其它依賴該物件的物件都會收到通知,並且隨著變化!物件之間是一種一對多的關係。...

行為型模式(4) 觀察者模式

指多個物件間存在一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。這種模式有時又稱作發布 訂閱模式 模型 檢視模式,它是物件行為型模式。適用場景 如果存在一系列類,他們都需要向指定類獲取指定的資料,當獲取到資料後需要觸發相應的業務邏輯。這種場景就可以用觀察者模式...