1.Visitor模式:将更新(变更)封装到一个类中(访问操作),并由待更改类提供一个接收接口,则可在不破坏类的前提下,为类提供增加新的新操作。

2.Visitor模式结构图

Visitor Pattern

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     virtual void VisitConcreteElementA(Element* elm);
23     virtual void VisitConcreteElementB(Element* elm);
24 protected:
25 private:
26 }; 
27 
28 class ConcreteVisitorB:public Visitor
29 {
30 public:
31     ConcreteVisitorB();
32     virtual ~ConcreteVisitorB();
33     virtual void VisitConcreteElementA(Element* elm);
34     virtual void VisitConcreteElementB(Element* elm);
35 protected:
36 private:
37 }; 
38 
39 #endif
Visitor.h

相关文章:

  • 2021-07-18
  • 2021-05-24
  • 2021-05-22
  • 2021-11-04
猜你喜欢
  • 2021-12-20
  • 2021-07-24
  • 2022-02-10
  • 2022-03-01
  • 2021-10-20
  • 2021-10-02
相关资源
相似解决方案