學習篇 設計模式 觀察者模式

2021-10-07 20:07:03 字數 1363 閱讀 2431

觀察者模式定義了物件間的一種一對多依賴關係,使得每當乙個物件改變狀態,則所有依賴於它的物件都會得到通知並被自動更新。它將觀察者和被觀察者的物件分離開。提高了應用程式的可維護性和重用性。觀察者模式又稱為發布/訂閱(publish/subscribe)模式。

使用場景

1、對乙個物件狀態的更新,需要其他物件同步更新,而且其他物件的數量動態可變。

2、 物件僅需要將自己的更新通知給其他物件而不需要知道其他物件的細節。

下面用觀察者模式實現乙個簡單的demo:

一:建立 subject 類

public

class

subject

public

void

setstate

(int state)

public

void

attach

(observer observer)

public

void

notifyallobservers()

}}}

二:建立觀察者抽象類
public abstract class

observer

三:建立觀察者具體類,當目標物件改變狀態時,依賴物件的狀態隨之改變
//訂閱者1

public

class

doubleobserver

: observer =

newdoubleobserver()

;private

doubleobserver()

public override void

subscribe

(subject subject)

public override void

update()

}//訂閱者2

class

squareobserver

:observer =

newsquareobserver()

;private

squareobserver()

public override void

subscribe

(subject subject)

public override void

update()

}//訂閱者3,4,5,6....

四:主方法執行
class

observerpatterndemo

}

五:執行程式,輸出結果:
雙倍:32

平方根:4

平方:256

學習設計模式 觀察者模式

說明 觀察者模式就是有兩個角色,乙個觀察者 乙個通知者,兩者的關係是多對一。當某個是事件觸發時,通知者通知觀察者去處理相應的事件。為了解耦合,需要將兩個角色都先抽象,然後再定義具體的實現類。缺點 需要所有觀察者處理相應事件名稱一致 需求 學生自習的時候開小差,需要代表時刻觀察老師是否來了,如果來了,...

設計模式學習 觀察者模式

定義 定義物件間一種一對多的依賴關係,使得每當乙個物件發生變化時,則所有依賴於他的物件都會得到通知並自動更新。使用場景 特點 實現物件的解耦,將觀察者和被觀察者完全隔離,只依賴於observe和observable抽象。簡單實現例子 抽象觀察者類,為所有具體觀察者定義乙個介面,在得到通知時更新自己 ...

設計模式學習 觀察者模式

觀察者模式就是某種事件發生之後,被觀察者收到訊號,通知註冊的觀察者進行邏輯處理,一般遊戲開發中任務和成就多是類似實現。簡單示例 pragma once include using namespace std const int max observer num 100 enum class even...