當(dāng)前位置:
首頁 >
设计模式复习-观察者模式
發(fā)布時(shí)間:2025/6/17
62
豆豆
生活随笔
收集整理的這篇文章主要介紹了
设计模式复习-观察者模式
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
#pragma once
#include "stdafx.h"
#include<set>
#include<list>
#include<string>
#include<iostream>
#include<windows.h>
using namespace std;//設(shè)計(jì)模式-觀察者模式Observer
//定義了一種一對(duì)多的依賴關(guān)系,讓多個(gè)觀察者對(duì)象同時(shí)監(jiān)聽某一個(gè)主題對(duì)象
//這個(gè)主題對(duì)象在狀態(tài)發(fā)生變化時(shí),會(huì)通知所有觀察者對(duì)象,使他們能夠自動(dòng)更新自己。class CObserver {//抽象接口
public:virtual void Update() = 0;
};class CSubject {//抽象通知者
private:set<CObserver *> m_HashMemory;
public:CSubject(){m_HashMemory.clear();}~CSubject() {for each(CObserver *i in m_HashMemory) {delete i;}}void Attach(CObserver *pObserver) {m_HashMemory.insert(pObserver);}void Detach(CObserver *pObserver) {m_HashMemory.erase(pObserver);delete pObserver;}void Notify() {for each(CObserver *i in m_HashMemory) {i->Update();}}
};class CConcreteSubjuct :public CSubject {//具體的通知著
private:string m_strSubjectState;
public:CConcreteSubjuct(const string &strName) {m_strSubjectState = strName;}string GetName() {return m_strSubjectState;}
};class ConcreteObserver :public CObserver{//具體的觀察者
private:string m_strName;string m_strObserverState;CConcreteSubjuct *m_pSubject;
public:ConcreteObserver(CConcreteSubjuct *pSubject ,const string &strName) {m_pSubject = pSubject;m_strName = strName;}void Update() {m_strObserverState = m_pSubject->GetName();cout << "觀察者" << m_strName << "的新狀態(tài)是" << m_strObserverState << endl;}
};int main()
{//一個(gè)前臺(tái),幾個(gè)員工CConcreteSubjuct *pQianTai = new CConcreteSubjuct("QianTai");ConcreteObserver *pYuanGongA = new ConcreteObserver(pQianTai ,"YuanGongA");ConcreteObserver *pYuanGongB = new ConcreteObserver(pQianTai, "YuanGongB");ConcreteObserver *pYuanGongC = new ConcreteObserver(pQianTai, "YuanGongC");pQianTai->Attach(pYuanGongA); pQianTai->Attach(pYuanGongB); pQianTai->Attach(pYuanGongC);pQianTai->Notify();pQianTai->Detach(pYuanGongB);pQianTai->Notify();getchar();return 0;
}
?
總結(jié)
以上是生活随笔為你收集整理的设计模式复习-观察者模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式复习-建造者模式
- 下一篇: 设计模式复习-状态模式