c++设计模式(访问者模式)
来源:互联网 发布:java访问jenkins 编辑:程序博客网 时间:2024/05/19 02:21
GOOD:适用于数据结构稳定的系统。它把数据结构和作用于数据结构上的操作分离开,使得操作集合
优点:新增加操作很容易,因为增加新操作就相当于增加一个访问者,访问者模式将有关的行为集中到一个访问者对象中
例:#include <iostream>#include <string>#include <vector>using namespace std;class Man;class Woman;//行为class Action{public: virtual void GetManConclusion(Man* concreteElementA)=0; virtual void GetWomanConclusion(Woman* concreteElementB)=0;};//成功class Success : public Action{public: virtual void GetManConclusion(Man* concreteElementA) { cout<<"男人成功时,背后有个伟大的女人"<<endl; } virtual void GetWomanConclusion(Woman* concreteElementB) { cout<<"女人成功时,背后有个没用的男人"<<endl; }};//失败class Failure : public Action{public: virtual void GetManConclusion(Man* concreteElementA) { cout<<"男人失败时,背后有个伟大的女人"<<endl; } virtual void GetWomanConclusion(Woman* concreteElementB) { cout<<"女人失败时,背后有个没用的男人"<<endl; }};//抽象人类class Person{public: virtual void Accept(Action* visitor)=0;};//男人class Man : public Person{public: virtual void Accept(Action* visitor) { visitor->GetManConclusion(this); }};//女人class Woman : public Person{public: virtual void Accept(Action* visitor) { visitor->GetWomanConclusion(this); }};//对象结构类class ObjectStructure{private: vector<Person*> m_personList;public: void Add(Person* p) { m_personList.push_back(p); } void Display(Action* a) { vector<Person*>::iterator p = m_personList.begin(); while (p!=m_personList.end()) { (*p)->Accept(a); p++; } }};//客户端int main(){ ObjectStructure * os= new ObjectStructure(); os->Add(new Man()); os->Add(new Woman()); Success* success = new Success(); os->Display(success); Failure* fl = new Failure(); os->Display(fl); return 0;}
0 0
- C语言和设计模式(访问者模式)
- C语言和设计模式(访问者模式)
- C语言和设计模式(访问者模式)
- 02.C语言和设计模式(访问者模式)
- 15、C语言和设计模式(访问者模式)
- 设计模式 访问者模式
- 设计模式 - 访问者模式
- 设计模式:访问者模式
- 设计模式 - 访问者模式
- 设计模式 - 访问者模式
- 设计模式------------访问者模式
- 设计模式:访问者模式
- 设计模式--访问者模式
- 设计模式--访问者模式
- 设计模式-访问者模式
- 设计模式--访问者模式
- 设计模式-访问者模式
- 设计模式-访问者模式
- android自定义AlertDialog对话框中的EditText无法弹出输入法解决方案
- 注册2数字域名,机会就在lc域名
- 黑马程序员——java面向对象(一)
- HTML常用标签之格式标签
- Android之MVC模式
- c++设计模式(访问者模式)
- 【BZOJ3613】【Heoi2014】南园满地堆轻絮 构造
- 归并排序
- 【算法】用Lua解决八皇后的问题
- 网易公开课中英字幕文件合并代码
- bootstrap源码解析-----------------样式重置部分
- ECLIPSE安装SVN插件及使用说明
- 【Hibernate】Hibernate Extension 配置和使用
- ISE Module Browser –直观高效的PowerShell模块管家!