访问者模式定义
提供一个作用于某对象结构中的各元素的操作表示,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
访问者模式结构图
访问者模式角色介绍
抽象访问者:Vistor,抽象访问者为每一个具体元素类ConcreteElement声明一个访问操作,从参数类型可以清楚知道需要访问的具体元素的类型,具体访问者需要实现这些操作方法,定义对这些元素的访问操作。
具体访问者:ConcreteVisitor,具体访问者实现了由抽象访问者声明的操作,每一个操作用于访问一个具体元素。
抽象元素:Element,抽象元素一般是抽象类或者接口,它定义一个accept()方法,该方法通常以一个抽象访问者作为参数。
具体元素:ConcreteElement,具体元素实现了accept()方法,在accept()方法中调用访问者的访问方法以便完成对该元素的操作。
访问者模式结构代码
抽象访问者:
public interface Visitor {
/**
* 访问具体元素A
* @param concreteElementA
*/
void visit(ConcreteElementA concreteElementA);
/**
* 访问具体元素B
* @param concreteElementB