設計模式學習 觀察者模式

2021-10-24 20:32:17 字數 1768 閱讀 4189

觀察者模式 (observer pattern) 是一種"發布者-訂閱者"的模式.有時候也被稱為"模型檢視模式","源-監聽者模式"等. 在這種模式中,由乙個目標物件來管理所有依賴與它的觀察者物件,並且當這個目標物件自身發生改變時,會主動向它的觀察者們發出通知.

//介面,讓weatherdata 來實現

public

inte***ce

subject

/**

* 1.包含最新的天氣情況資訊

* 2.含有觀察者集合,使用arraylist管理

* 3.當資料有更新時,就主動的呼叫arraylist,通知所有的(接入方)就看到最新的資訊

*/public

class

weatherdata

implements

subject

public

float

gettemperatrue()

public

float

getpressure()

public

float

gethumidity()

public

void

datachange()

//當資料有更新時,就呼叫setdata

public

void

setdata

(float temperatrue,

float pressure,

float humidity)

//註冊乙個觀察者

@override

public

void

registerobserver

(observer o)

//移除乙個觀察者

@override

public

void

removeobserver

(observer o)

}//通知:遍歷所有的觀察者,並通知

@override

public

void

notifyobservers()

}}

public

inte***ce

observer

public

class

currentconditions

implements

observer

//顯示

public

void

display()

}

public

class

client

}

追observable原始碼可看到,在該類中定義了vector集合。

observalbe實現了相關的方法。

vector集合中巢狀了observer型別的介面,在介面中定義了update方法。

模式角色分析

學習設計模式 觀察者模式

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

設計模式學習 觀察者模式

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

設計模式學習 觀察者模式

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