C++实现观察者模式
作者:网络转载 发布时间:[ 2014/9/22 10:49:28 ] 推荐标签:软件开发 Net C++
2、观察者类需要继承自Observer,并且重写了update()函数,在该函数中判断,如果发生的事件是自己期望的,update()函数会被调用。
示例代码如下:
class Test1 : public Observer
{
public:
//observer
virtual void update(Observable* from, YtEvent *e)
{
if(NULL == e)
return;
std::string szEvent = e->getEvent();
if(szEvent == "start_update")
{
printf("I find a Update Message. ");
}
}
};
3、被观察者类需要继承自Observable,其中定义了一个value变量,需要实现的是,如果value发生变化,那么通知Test1类知道。
示例代码如下:
#ifndef __DOC_DATA_
#define __DOC_DATA_
#include "Observer.h"
class CDoc : public Observable
{
public:
CDoc()
{
value = 0;
}
~CDoc()
{
value = -1;
}
void setValue(int arg)
{
value= arg;
}
int getValue()
{
return value;
}
private:
int value;
};
#endif
4、被监视的类CDoc,调用addObserver()函数添加观察者类(函数参数要进行转换),定义某事件,把发生该事件的消息通过调用notifyObservers()函数通知观察者类
测试代码如下:
// ObserverTest.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "Observer.h"
#include "Test1.h"
#include "DocData.h"
#include "YtEvent.h"
void main()
{
CDoc data;
TestOBSERVER1 test;
char aa[128];
data.addObserver(static_cast<Observer*>(&test));
YtEvent yet("start_update");
data.notifyObservers(&yet);
printf("aaaaaaaaaaaaaaaaaaaaaaa ");
scanf("%s", aa);
}
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11热门文章
常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南