目的
抽象说法
(访问者)表示一个作用于某对象结构中的各元素的操作。它允许在不改变各元素的类的前提下,定义作用于这些元素的新操作。
访问者模式属于【行为型】设计模式。
说得明白点
访问者模式可以让你将对象操作外包给其他对象。这样做的最主要原因就是关注(数据结构和数据操作)分离。但是被访问的类必须定一个契约接受访问者。 (详见例子中的 Role::accept 方法)
契约可以是一个抽象类也可直接就是一个接口。在此情况下,每个访问者必须自行选择调用访问者的哪个方法。
说得再明白点
当我们需要对某个对象进行一些操作时,我们可以使用访问者模式,让访问者来对对象进行操作。
这样当我们操作改变时,换个访问者就行了。