常说的设计模式是23种设计模式,分为3大类:
上次咱们说了“状态模式”,今天咱们来说“访问者模式”。

“访问者模式”重点在于访问,需要两个角色:“访问者”和“被访问者”。
“被访问者”要调用“访问者”的访问行为,从而输出“访问者”访问的信息。
也就是说,“被访问者”是被动的,要通过“访问者”输出“被访问者”的信息。
先定义,“被访问者”的抽象行为。

“Node”是“被访问者”的抽象类

“NodeB”实现类

“accept”方法是调用“访问者”的行为去执行信息。
“Visitor”是“访问者”的接口

“VisitorA”实现类

“visit”方法显示“Node”的信息。
主要控制类“ObjectStructure”,用来确定“访问者”访问“被访问者”的流程控制
“nodes”是List集合,用来添加“被访问者”节点。
“action”方法是接收“访问者”访问List集合中的每一个“被访问者”节点。
“add”方法添加“被访问者”节点的对象。
实际应用:
主要控制类对象“ObjectStructrue”
添加了两个“被访问者”对象“NodeA”和“NodeB”
执行“action”接受“VisitorA”“访问者”访问
下面我们模拟一个实际场景。
《西游记》中,孙悟空在天庭被封弼马温时,成天无所事事,除了放马,就是到处游玩。
假设“访问者”是孙悟空,“被访问者”节点是游玩的地点。这样就更容易理解访问者模式的结构。
“被访问者”抽象类

第一个被访问的地点实现类——“东海龙宫”


第二个被访问的地点——“凌霄宝殿”


设置一个“访问者”接口

访问者的实现类——孙悟空


总调度流程控制类

最后应用

