使用C++实现OO观察者模式
来源:互联网 发布:淘宝上买黄牛票犯法吗 编辑:程序博客网 时间:2024/05/19 00:37
// test.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <iostream>#include <vector>#include <string>using namespace std; class observerBase{public:virtual void answer(){};};class subjectBase{public:virtual void register_ob(observerBase *){};virtual void delete_ob(observerBase *){};virtual void ask(){};};class subjectS: public subjectBase{public: vector<observerBase*> ob_list; void register_ob(observerBase *ob) { ob_list.push_back(ob); //cout<<"push back"<<endl; }void delete_ob(observerBase *ob){ for(auto i=ob_list.begin();i!=ob_list.end();){if((*i)==ob){i=ob_list.erase(i);}else{i++;}}} void ask() { cout<<"shoud i do?"<<endl; for(auto i=ob_list.begin();i!=ob_list.end();i++)//auto == vector<observerBase*>::iterator { (*i)->answer(); //cout<<"answer"<<endl; } }};class devil:public observerBase{public: devil(subjectBase *i) { i->register_ob(this); //cout << "reg"<<endl; } void answer() { cout<<"devil said: fuck u"<<endl; } void leave(subjectBase *i) { i->delete_ob(this); cout<<"devil said: I leave!"<<endl; }};class angel: public observerBase{public: angel(subjectBase *i) { i->register_ob(this); //cout << "reg"<<endl; } void answer() { cout<<"angel said: yes, try!"<<endl; } void leave(subjectBase *i) { i->delete_ob(this); cout<<"angel said: I leave!"<<endl; }};class man: public observerBase{public: man(subjectBase *i) { i->register_ob(this); //cout << "reg"<<endl; } void answer() { cout<<"man said : I don't know too!"<<endl; } void leave(subjectBase *i) { i->delete_ob(this); cout<<"man said : I left!"<<endl; }};int _tmain(int argc, _TCHAR* argv[]){subjectS i;devil *devil_inst = new devil((subjectBase *)&i);angel *angel_inst = new angel((subjectBase *)&i);man *man_inst = new man((subjectBase *)&i);i.ask();cout<<"========================"<<endl;man_inst->leave((subjectBase *)&i);i.ask();cout<<"========================"<<endl;devil_inst->leave((subjectBase *)&i);i.ask();delete devil_inst;delete man_inst;delete angel_inst;return 0;}
0 0
- 使用C++实现OO观察者模式
- 观察者模式使用C#实现
- Objective C中实现观察者模式
- 观察者模式(C语言实现)
- 观察者模式使用WebForm实现的例子
- 使用 Java8 架构实现观察者模式
- 如何使用 Java 8 实现观察者模式
- 如何使用 Java8 实现观察者模式
- 【C++】Chapter10:观察者模式
- Objective C--观察者模式
- Objective C 观察者模式
- 观察者模式(C++)
- Objective C--观察者模式
- c版本观察者模式
- 【C++】观察者模式
- 观察者模式(C++)
- Object-c 观察者模式
- C++:观察者模式
- Selenium_RC环境配置
- 《简明Python教程》学习笔记
- 基于Freemarker的eclipse plugin代码生成器插件开发
- C++第一次实验-1
- (七) Freemarker 发送邮件
- 使用C++实现OO观察者模式
- windows 2003 配置多个tomcat需注意的配置点
- 读书笔记-《Linux/Unix设计思想》
- Python网络爬虫(1)--url访问及参数设置
- 读书笔记-《Java核心技术卷I-基础知识》
- ORACLE中 %TYPE 和 %ROWTYPE 的使用
- Robot Framework 教程 (1) - 环境配置及简单网站兼容性测试
- mysql修改数据库表和表中的字段的编码格式的修改
- Robot Framework 教程 (2) - 页面元素定位