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("voidme.com"); computer.accept(new ConsoleVisitor()); computer.accept(new EmailVisitor()); } }
上面的代码生成以下结果。
console:voidme.com
email:voidme.com