public class Keyboard implements ComputerPart { public Override void accept(ComputerPartVisitor computerPartVisitor) { computerPartVisitor.visit(this); } }
public class Monitor implements ComputerPart { public Override void accept(ComputerPartVisitor computerPartVisitor) { computerPartVisitor.visit(this); } }
public class Mouse implements ComputerPart { public Override void accept(ComputerPartVisitor computerPartVisitor) { computerPartVisitor.visit(this); } }
public class Computer implements ComputerPart { ComputerPart[] parts;
public Computer() { parts = new ComputerPart[] {new Mouse(), new Keyboard(), new Monitor()}; } public Override void accept(ComputerPartVisitor computerPartVisitor) { for (int i = 0; i < parts.length; i++) { parts[i].accept(computerPartVisitor); } computerPartVisitor.visit(this); } }
3.定义一个表示访问者的接口。
1 2 3 4 5 6 7
public interface ComputerPartVisitor { public void visit(Computer computer); public void visit(Mouse mouse); public void visit(Keyboard keyboard); public void visit(Monitor monitor); }
public class ComputerPartDisplayVisitor implements ComputerPartVisitor { public Override void visit(Computer computer) { System.out.println("Displaying Computer."); }
public Override void visit(Mouse mouse) { System.out.println("Displaying Mouse."); }
public Override void visit(Keyboard keyboard) { System.out.println("Displaying Keyboard."); }
public Override void visit(Monitor monitor) { System.out.println("Displaying Monitor."); } }
public class VisitorPatternDemo { public static void main(String[] args) { ComputerPart computer = new Computer(); computer.accept(new ComputerPartDisplayVisitor()); } }