c++23种设计模式之访问者模式
2013-01-23 15:47
351 查看
#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; }
相关文章推荐
- 23种设计模式C++实例之访问者模式
- c++ 23种设计模式之适配器模式
- 23种设计模式之单例模式(创建型,3 Singleton,c++实现)
- C++设计模式--访问者模式
- 23种设计模式C++实例之概述
- 23种设计模式C++实例之享元模式
- 23种设计模式之装饰器模式(结构型,2 Decorator,c++实现)
- 23种设计模式C++实例之观察者模式
- 设计模式观后(c++还原之二十二 访问者模式)
- 设计模式C++版:第二十二式访问者模式
- 23种设计模式(9):访问者模式
- 23种设计模式4--行为型模式(策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式)
- 设计模式(十七)------23种设计模式(9):访问者模式
- 23种设计模式(9):访问者模式
- c++/qt 23种设计模式
- //c++ 23种设计模式之建造者模式2
- 23种设计模式(9):访问者模式
- 23种设计模式C++实例之工厂方法模式
- 23种设计模式C++实例之适配器模式
- 23种设计模式C++实例之状态模式