Java设计模式 - 访问者模式
在访问者模式中,元素对象接受访问者对象,而访问者对象处理元素对象上的操作。
此模式是一种行为模式。
通过这种方式,可以从不同的访问者改变元素的执行算法。
例子
class TreeNode {
private String name;
public TreeNode(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void accept(NodeVisitor v) {
v.visit(this);
}
}
interface NodeVisitor {
public void visit(TreeNode n);
}
class ConsoleVisitor implements NodeVisitor {
@Override
public void visit(TreeNode n) {
System.out.println("console:" + n.getName());
}
}
class EmailVisitor implements NodeVisitor {
@Override
public void visit(TreeNode n) {
System.out.println("email:" + n.getName());
}
}
public class Main {
public static void main(String[] args) {
TreeNode computer = new TreeNode("123.cn");
computer.accept(new ConsoleVisitor());
computer.accept(new EmailVisitor());
}
}
上面的代码生成以下结果。
console:123.cn
email:123.cn