您的位置:首页 > 其它

设计模式 之 《观察者模式 (Observer)》

2013-11-10 21:18 423 查看


#ifndef __OBSERVER_MODEL__
#define __OBSERVER_MODEL__

#include <string>
#include <iostream>
#include <vector>
using namespace std;
/*
GOOD:定义了一种一对多的关系,让多个观察对象(公司员工)同时监听一个主题对象(秘书),
主题对象状态发生变化时,会通知所有的观察者,使它们能够更新自己。
*/

class Secretary;

//看股票的同事类(观察对象,观察者)
class StockObserver
{
private:
string name;
Secretary* sub;
public:
StockObserver(string strName, Secretary* strSub)
{
name = strName;
sub = strSub;
}
void update();
};

//秘书类(主题对象,通知者)
class Secretary
{
private:
vector<StockObserver> observers;
public:
string action;
void add(StockObserver ob){ observers.push_back(ob); }
void notify()
{
vector<StockObserver>::iterator iter = observers.begin();
while( iter != observers.end() )
{
(*iter).update();
++iter;
}
}
};

void StockObserver::update()
{
cout<<name<<":"<<sub->action<<",不要玩股票了,要开始工作了!"<<endl;
}

#endif //__OBSERVER_MODEL__

/*
#include "ObserverModel.h"
int _tmain(int argc, _TCHAR* argv[])
{
//创建通知者
Secretary* p = new Secretary();
//观察者
StockObserver *s1= new StockObserver("小李",p);
StockObserver *s2 = new StockObserver("小赵",p);
//加入通知队列
p->add(*s1);
p->add(*s2);
//事件
p->action="老板来了";
//通知
p->notify();

return 0;
}
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: