设计模式之观察者模式C++代码
来源:互联网 发布:h5页面动态软件 编辑:程序博客网 时间:2024/06/18 04:40
///////// Observer.h
#ifndef dOBSR
#define dOBSRclass Observer
{
private:
public:
virtual void Update() = 0;
};
#endif dOBSR
///////// Subject.h
#ifndef dSUB
#define dSUB
#include <list>
#include "Observer.h"
using namespace std;
class Subject
{
private:
list<Observer*> obsrList;
public:
void Attach(Observer* obsr) { obsrList.push_back(obsr);};
void Dettach(Observer* obsr)
{
list<Observer*>::iterator i;
for(i=obsrList.begin();i!=obsrList.end();i++)
{
if((*i) == obsr)
obsrList.erase(i);
}
};
void Notify()
{
list<Observer*>::iterator i;
for(i=obsrList.begin();i!=obsrList.end();i++)
{
(*i)->Update();
}
};
};
#endif dSUB
/////////////////ConcreteObserver.h
#define dCO
#include "Observer.h"
#include "ConcreteSubject.h"
#include <iostream>
using namespace std;
class ConcreteObserver : public Observer
{
private:
string ObsrName;
string ObsrState;
ConcreteSubject* subject;
public:
ConcreteObserver(ConcreteSubject* sub,string name)
{
this->subject = sub;
this->ObsrName = name;
};
void Update()
{
this->ObsrState = this->subject->getState();
cout << "Observer:" << this->ObsrName << "'s state is:" << this->ObsrState << endl;
};
};
#endif dCO
/////////////////ConcreteSubject.h
#ifndef dCS
#define dCS
#include "Subject.h"
#include <string>
using namespace std;
class ConcreteSubject : public Subject
{
private:
string subState;
public:
string getState() { return this->subState;};
void setState(string state){ this->subState = state;};
};
#endif dCS
/////////////main.cpp
#include "ConcreteObserver.h"
#include "ConcreteSubject.h"
void main()
{
ConcreteSubject* cs = new ConcreteSubject();
ConcreteObserver* co1 = new ConcreteObserver(cs,"X");
ConcreteObserver* co2 = new ConcreteObserver(cs,"Y");
ConcreteObserver* co3 = new ConcreteObserver(cs,"Z");
cs->Attach(co1);
cs->Attach(co2);
cs->Attach(co3);
cs->setState("Hello!");
cs->Notify();
int a;
cin >> a;
}
- 设计模式之观察者模式C++代码
- 设计模式之观察者模式(C++)
- 设计模式之观察者模式(c++)
- 设计模式之-观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者模式
- 设计模式之观察者模式
- 设计模式之观察者模式
- 设计模式之观察者模式
- ndebug与debug及assert()的用法
- 参加王品集团武大招聘宣讲会的感受-刘俊平
- SQLServer中监视sql执行的时间,比较sql语句的效率
- java.sql.SQLException: ORA-00904: "THIS_"."NAME": 标识符无效?
- 数据结构简单要点总结
- 设计模式之观察者模式C++代码
- linux如何限制ftp连接源地址
- 载入和保存properties文件
- javac命令
- JS调用web service的通用函数
- VC mfc Clistbox 将里面的项目以及数据 存到txt 实现
- Kerberos 原理
- MS SQL2000个人版安装教程(图文教程)
- 服务器控件之间不能随意的嵌套