访问者模式(visitor),表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问者模式适用于数据结构相对稳定的系统。它把数据结构和作用于结构上的操作之间的耦合解脱开,使得操作集合可以相对自由地演化。访问者模式的目的是要把处理从数据结构分离出来。很多系统可以按照算法和数据结构分开,如果这样的系统有比较稳定的数据结构,又有易于变化的算法的话,使用访问者模式就是比较合适的,因为访问者模式使得算法操作的增加变得容易。反之,如果这样的系统的数据结构对象易于变化,经常要有新的数据对象增加进来,就不适合使用访问者模式。
访问者模式的优点就是增加新的操作很容易,因为增加新的操作就意味着增加一个新的访问者。访问者模式将有关的行为集中到一个访问者对象中。通常concreteVisitor可以单独开发,不必跟concreteElement写在一起。访问者的缺点其实也就是使增加新的数据结构变得困难了。
结构图:
访问者模式基本示例代码
访问者模式 visitor.h、concreteVisitor.h、element.h、concreteElement.h、objectStructure.h
客户端 visitorApp.cpp
访问者模式
visitor.h
/************************************************************************
* description: 为该对象结构中ConcreteElement的每一个类声明一个visit操作
* remark:
************************************************************************/
#ifndef _VISITOR_H_
#define _VISITOR_H_
class concreteElementA;
class concreteElementB;
class visitor
{
public:
visitor(){};
virtual ~visitor(){};
virtual void visitConcreteElementA(concreteElementA* pConcreteElementA) = 0;
virtual void visitConcreteElementB(concreteElementB* pConcreteElementB) = 0;
};
#endif// _VISITOR_H_
concreteVisitor.h











