访问者模式的定义为:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
下面是一个访问者模式的源码例子:
/**
* 元素类
*
* @author Administrator
*
*/
abstract class Element
{
public abstract void accept(Vistor vistor);
public abstract void showElementName(String name);
}
/**
* 元素A
*
* @author Administrator
*
*/
class ElementA extends Element
{
@Override
public void accept(Vistor vistor)
{
vistor.vistElementA(this);
}
@Override
public void showElementName(String name)
{
System.out.println(name);
}
}
/**
* 元素B
*
* @author Administrator
*
*/
class ElementB extends Element
{
@Override
public void accept(Vistor vistor)
{
vistor.vistElementB(this);
}
@Override
public void showElementName(String name)
{
System.out.println(name);
}
}
/**
* 访问者接口
*
* @author Administrator
*
*/
interface Vistor
{
public void vistElementA(ElementA elementA);
public void vistElementB(ElementB elementB);
}
/**
* 访问者实现
*
* @author Administrator
*
*/
class VistorImpl implements Vistor
{
@Override
public void vistElementA(ElementA elementA)
{
elementA.showElementName("这是元素A");
}
@Override
public void vistElementB(ElementB elementB)
{
elementB.showElementName("这是元素B");
}
}
/**
* 测试类
*
* @author Administrator
*
*/
public class Test
{
public static void main(String[] args)
{
Vistor vistor = new VistorImpl();
Element elA = new ElementA();
Element elB = new ElementB();
elA.accept(vistor);
elB.accept(vistor);
}
}
屏幕打印结果如下:
这是元素A
这是元素B