访问者模式(Visitor)

意图

表示一个作用于某对象结构中的各元素的操作。

Visitor 模式使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。

适用性

在下列情况下使用 Visitor 模式:

参与者

协作

效果

下面是访问者模式的一些优缺点:

示例一:通用源代码(双重分派)

数据结构的每一个节点都可以接受一个访问者的调用,此节点向访问者对象传入节点对象,而访问者则反过来执行节点对象的操作。这样的过程叫做 “双重分派”。节点调用访问者,将它自己传入,访问者则将某种算法针对此节点执行。

1568101297817

1568101316288