表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。访问器模式的本质就是预留通路,回调实现。
使用给用户添加积分的例子来实现访问者模式。用户系统中有普通用户和VIP用户,不同的用户添加的积分不一样,通过对象结构处理添加积分访问器来添加剂分。
访问者能够实现在不改变对象结构的情况下,就可以给对象结构中的类增加功能使用的是两次分发的技术。双分派意味着得到执行的操作决定于请求的种类和两个接收者的类型。Accept是一个两次分发操作,它的含义决定两个类型:访问器和具体元素。Accept通过采用“两次分发”技术将调用结果返回给访问器类。visit()方法定义在访问器类中,类层次结构中的某个类对象可以根据其类型调用合适的visit()方法。
