c++ 数据封装模式之四: 观察着工厂模式
来源:互联网 发布:mac qq发离线文件 编辑:程序博客网 时间:2024/05/21 11:28
//
#include "stdafx.h"
#include "ostream.h"
#include <afxcoll.h>
//定义抽象观察者角色
class CObserver
{
public:
// Observer.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "ostream.h"
#include <afxcoll.h>
//定义抽象观察者角色
class CObserver
{
public:
virtual UpdateOpt()= 0;
};
//定义具体观察者角色
class CDetailObsvr: public CObserver
{
public:
virtual UpdateOpt()
{
cout<<"Get Notification!/n";
}
};
//定义抽象主题角色
class CSubject
{
public:
virtual void AddObsvr(CObserver* Observer) = 0;
virtual void DeleteObsvr()= 0;
virtual void NotifyObsvr()= 0;
virtual void SetState(int State) = 0;
virtual ~CSubject()
{
;
}
};
//定义具体主题角色
class CDetailSub: public CSubject
{
protected:
CObList* m_ObsvrList;
int m_State;
virtual void NotifyObsvr()
{
POSITION pos = m_ObsvrList->GetHeadPosition();
while (pos)
{
CObserver* pObsvr = (CObserver*)m_ObsvrList->GetNext(pos);
pObsvr->UpdateOpt();
}
}
public:
virtual void SetState(int State)
{
m_State = State;
NotifyObsvr();
}
CDetailSub()
{
m_ObsvrList = new CObList();
}
virtual void AddObsvr(CObserver* Observer)
{
m_ObsvrList->AddTail((CObject*)Observer);
}
virtual void DeleteObsvr()
{
m_ObsvrList->RemoveTail();
}
virtual ~CDetailSub()
{
POSITION pos = m_ObsvrList->GetHeadPosition();
if (pos)
{
while (pos)
{
CObserver* pObsvr = (CObserver*)m_ObsvrList->GetNext(pos);
delete pObsvr;
}
m_ObsvrList->RemoveAll();
}
delete m_ObsvrList;
}
};
int main(int argc, char* argv[])
{
CSubject* pSub = new CDetailSub();
pSub->AddObsvr(new CDetailObsvr());
pSub->AddObsvr(new CDetailObsvr());
pSub->AddObsvr(new CDetailObsvr());
pSub->AddObsvr(new CDetailObsvr());
pSub->SetState(10);
delete pSub;
return 0;
}
- c++ 数据封装模式之四: 观察着工厂模式
- c++ 数据封装模式之二: 工厂方法模式
- c++ 数据封装模式之三: 抽象工厂模式
- Android设计模式之-观察着模式
- Java设计模式之观察着模式
- 设计模式之四 抽象工厂模式
- 设计模式之四:工厂模式
- 设计模式之四工厂模式
- Ajax之工厂模式封装XMLHttpRequest
- c++ 数据封装模式之一: 简单工厂模式
- c++ 数据封装模式之一: 简单工厂模式
- 设计模式之工厂模式(c++)
- C#--设计模式之简单工厂模式
- C#--设计模式之工厂方法模式
- 观察着模式
- 观察着模式
- 设计模式之简单工厂,工厂方法模式(c++)
- 设计模式之四:工厂模式(简单工厂、工厂方法、抽象工厂)
- Jim Chan函数调用的汇编程序过程
- c++ 数据封装模式之二: 工厂方法模式
- 初始化隐藏对话框程序
- c++ 数据封装模式之三: 抽象工厂模式
- 开始MLFS项目
- c++ 数据封装模式之四: 观察着工厂模式
- 终端和控制台的区别
- jquery.validate.js表单验证
- OpenJWeb1.9增删改查零编码快速开发视频
- 思考半天还是没有成功做出来!
- Dojo 1.6 官方教程:Dojo中的事件
- 查看和改变文件格式
- 寻求关于FreeImage的使用帮助
- java回调函数