Visitor Pattern
1.Visitor模式:将更新(变更)封装到一个类中(访问操作),并由待更改类提供一个接收接口,则可在不破坏类的前提下,为类提供增加新的新操作。 2.Visitor模式结构图 Visitor模式的关键是双分派(Double-Dispatch)的技术:Accept()操作是一个双分派的操作,具体调用哪个Accept()操作,有两个决定因素(1)Element类型(2)Visitor类型。 3.实现 1 #ifndef _VISITOR_H_ 2 #define _VISITOR_H_ 3 4 class Element; 5 6 class Visitor 7 { 8 public: 9 virtual ~Visitor(); 10 virtual void VisitConcreteElementA(Element* elm) = 0; 11 virtual void VisitConcreteElementB(Element* elm) = 0; 12 protected: 13 Visitor(); 14 private: 15 }; 16 17 class ConcreteVisitorA:public Visitor 18 { 19 public: 20 ConcreteVisitorA(); 21 virtual ~ConcreteVisitorA(); 22