它把数据结构和作用于结构上的操作之间的耦合解脱开,使得操作集合可以相对自由的演化.
#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); } 去长城玩 吃烤鸭 去西湖玩 吃龙井虾仁