访问者模式(Visitor)

访问者模式(Visitor),表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作.

它把数据结构和作用于结构上的操作之间的耦合解脱开,使得操作集合可以相对自由的演化.

#include <iostream>
using namespace std;

class TravelingPlace
{
public:
    TravelingPlace(){}
    ~TravelingPlace(){}
    virtual void play()=0;
    virtual void eat()=0;
};

class BeiJing:public TravelingPlace
{
public:
    BeiJing(){}
    ~BeiJing(){}
    void play(){
        cout << "去长城玩" << endl;
    }
    void eat(){
        cout << "吃烤鸭" << endl;
    }
};

class HangZhou:public TravelingPlace
{
public:
    HangZhou(){}
    ~HangZhou(){}
    void play(){
        cout << "去西湖玩" << endl;
    }
    void eat(){
        cout << "吃龙井虾仁" << endl;
    }
};

class Visitor
{
public:
    void visit(TravelingPlace* place){
        place->play();
        place->eat();
    }
};

int main()
{
    BeiJing bj;
    HangZhou hz;
    Visitor visitor;
    visitor.visit(&bj);
    visitor.visit(&hz);
}

去长城玩
吃烤鸭
去西湖玩
吃龙井虾仁

猜你喜欢

转载自xiangjie88.iteye.com/blog/2099795