設計模式學習 觀察者模式

2021-09-29 16:44:03 字數 723 閱讀 5256

觀察者模式就是某種事件發生之後,被觀察者收到訊號,通知註冊的觀察者進行邏輯處理,一般遊戲開發中任務和成就多是類似實現。

簡單示例

#pragma once

#include using namespace std;

const int max_observer_num = 100;

enum class event

;class observer

virtual void notify(event event){}

private:

};class achievements : public observer

private:

};class subject

} }protected:

observer* m_observers[max_observer_num];

};class csubject : public subject

} }private:

};

#include "observer.h"

int main()

注意:

1、這裡觀察者列表使用的是陣列,一般使用過程中都是動態分配記憶體形式,可以改為記憶體池,或者鍊錶的方式儲存觀察者列表。

2、這裡使用了子主題,可以進行不同觀察者繫結,可以靈活選擇是否需要根據不同主題進行通知觀察者。

學習設計模式 觀察者模式

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

設計模式學習 觀察者模式

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

設計模式學習 觀察者模式

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