首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

设计形式学习-访问者模式

2012-12-27 
设计模式学习-----访问者模式访问者模式   GOOD:适用于数据结构稳定的系统。它把数据结构和作用于数据结构

设计模式学习-----访问者模式

访问者模式

   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;}//转载请注明,文章来自:http://blog.csdn.net/windows_nt


 

热点排行