设计模式---观察者模式
来源:互联网 发布:js 集合 编辑:程序博客网 时间:2024/06/05 20:32
观察者模式
又叫发布-订阅模式
定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察,使它们能够自动更新自己。
#include<iostream>
#include<list>using namespace std;
class Observer
{
public:
virtual void Update(){}
};
class Subject
{
private:
list<Observer*> m_observers;
protected:
string m_status;
public:
void Attach(Observer *observer)
{
m_observers.push_back(observer);
}
void Remove(Observer *observer)
{
m_observers.remove(observer);
}
void Notify()
{
list<Observer*>::iterator iter = m_observers.begin();
for(;iter != m_observers.end();iter++)
{
(*iter)->Update();
}
}
virtual void SetStatus(string s){}
virtual string GetStatus(){}
};
class ConcreteSubject:public Subject
{
public:
void SetStatus(string s){m_status = s;}
string GetStatus(){return m_status;}
};
class ConcreteObserver:public Observer
{
private:
string m_name;
Subject *m_subject;
public:
ConcreteObserver(string name,Subject *sub):m_name(name),m_subject(sub){}
void Update()
{
string status = m_subject->GetStatus();
cout<<m_name<<" -----"<<status<<endl;
}
};
int main()
{
ConcreteSubject *s = new ConcreteSubject();
s->SetStatus("123");
s->Attach(new ConcreteObserver("aa",s));
s->Attach(new ConcreteObserver("bb",s));
s->Attach(new ConcreteObserver("cc",s));
s->Notify();
return 0;
}
阅读全文
0 0
- 模式设计:观察者模式
- 设计模式-----观察者模式
- 设计模式-观察者模式
- 设计模式--观察者模式
- 设计模式:观察者模式
- 设计模式-----观察者模式
- 设计模式:观察者模式
- 设计模式-观察者模式
- 设计模式 观察者模式
- 设计模式-观察者模式
- 设计模式-【观察者模式】
- 设计模式-观察者模式
- 设计模式 -- 观察者模式
- 设计模式-观察者模式
- 【设计模式】观察者模式
- 设计模式- 观察者模式
- 设计模式- 观察者模式
- 设计模式--观察者模式
- substr(start,length) substring(start,end)
- document.querySelectorAl和document.querySelector的区别及其使用的封装
- 网页上插入百度地图
- vue实现图片滚动(类似走马灯效果)
- typescript+webpack+webpack-dev-server结合在网页中运行
- 设计模式---观察者模式
- linux interrupt
- 深入理解信号槽
- Linux VFS文件系统之rootfs注册与挂载
- Matlab中bsxfun(fun, A, B)函数
- Dubbo简易监控中心安装
- Linux 64位下Oracle 12CR2安装(二)
- html5跨域通信
- JQuery中获取DataTables的总行数