java 访问者模式 实例
时间: 2023-08-24 07:20:39 浏览: 72
访问者模式是一种行为型设计模式,它允许你将算法与其所作用的对象分离开来。这种分离的实际结果是能在不修改对象结构的前提下向该结构添加新功能。
下面是一个 Java 实现的访问者模式示例:
首先,我们定义一个元素接口 Element,该接口有一个接受访问者的方法 accept:
```java
public interface Element {
void accept(Visitor visitor);
}
```
然后,我们定义两个元素类:AElement 和 BElement,它们都实现了 Element 接口:
```java
public class AElement implements Element {
@Override
public void accept(Visitor visitor) {
visitor.visit(this);
}
}
public class BElement implements Element {
@Override
public void accept(Visitor visitor) {
visitor.visit(this);
}
}
```
接着,我们定义一个访问者接口 Visitor,该接口有两个访问方法 visit,分别对应上面的两个元素类:
```java
public interface Visitor {
void visit(AElement element);
void visit(BElement element);
}
```
最后,我们定义一个具体的访问者类 ConcreteVisitor,它实现了 Visitor 接口,并根据需要实现 visit 方法:
```java
public class ConcreteVisitor implements Visitor {
@Override
public void visit(AElement element) {
System.out.println("访问者访问 AElement");
}
@Override
public void visit(BElement element) {
System.out.println("访问者访问 BElement");
}
}
```
现在,我们可以测试访问者模式了:
```java
public class Test {
public static void main(String[] args) {
Element a = new AElement();
Element b = new BElement();
Visitor visitor = new ConcreteVisitor();
a.accept(visitor);
b.accept(visitor);
}
}
```
输出结果为:
```
访问者访问 AElement
访问者访问 BElement
```
这说明访问者模式成功地将算法与元素对象分离开来了。