无涯教程将创建一个定义接受操作的 ComputerPart 接口,Keyboard,Mouse,Monitor和Computer是实现 ComputerPart 接口的具体类。将定义另一个接口 ComputerPartVisitor ,它将定义访问者类操作。 计算机使用具体的访问者来执行相应的操作。
演示类 VisitorPatternDemo 将使用 Computer 和 ComputerPartVisitor 类来演示访问者模式的使用。
第1步 - 定义ComputerPart接口。
ComputerPart.java
public interface ComputerPart { public void accept(ComputerPartVisitor computerPartVisitor); }
第2步 - 创建扩展上述类的具体类。
Keyboard.java
public class Keyboard implements ComputerPart { @Override public void accept(ComputerPartVisitor computerPartVisitor) { computerPartVisitor.visit(this); } }
Monitor.java
public class Monitor implements ComputerPart { @Override public void accept(ComputerPartVisitor computerPartVisitor) { computerPartVisitor.visit(this); } }
Mouse.java
public class Mouse implements ComputerPart { @Override public void accept(ComputerPartVisitor computerPartVisitor) { computerPartVisitor.visit(this); } }
Computer.java
public class Computer implements ComputerPart { ComputerPart[] parts; public Computer(){ parts=new ComputerPart[] {new Mouse(), new Keyboard(), new Monitor()}; } @Override public void accept(ComputerPartVisitor computerPartVisitor) { for (int i=0; i < parts.length; i++) { parts[i].accept(computerPartVisitor); } computerPartVisitor.visit(this); } }
第3步 - 定义一个代表访客的接口。
ComputerPartVisitor.java
public interface ComputerPartVisitor { public void visit(Computer computer); public void visit(Mouse mouse); public void visit(Keyboard keyboard); public void visit(Monitor monitor); }
第4步 - 创建实现上述类的具体访客。
ComputerPartDisplayVisitor.java
public class ComputerPartDisplayVisitor implements ComputerPartVisitor { @Override public void visit(Computer computer) { System.out.println("Displaying Computer."); } @Override public void visit(Mouse mouse) { System.out.println("Displaying Mouse."); } @Override public void visit(Keyboard keyboard) { System.out.println("Displaying Keyboard."); } @Override public void visit(Monitor monitor) { System.out.println("Displaying Monitor."); } }
第5步 - 使用 ComputerPartDisplayVisitor 显示 Computer 的部分。
VisitorPatternDemo.java
public class VisitorPatternDemo { public static void main(String[] args) { ComputerPart computer=new Computer(); computer.accept(new ComputerPartDisplayVisitor()); } }
第6步 - 验证输出。
Displaying Mouse. Displaying Keyboard. Displaying Monitor. Displaying Computer.
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)