1 访问者模式
2 实现。
interface ComputerPart{
public void accept(Visitor visitor);
}
class Mouse implements ComputerPart{
@Override
public void accept(Visitor visitor) {
visitor.visitMouse(this);
}
}
class Keyboard implements ComputerPart{
@Override
public void accept(Visitor visitor) {
visitor.visitKeyboard(this);
}
}
class Computer implements ComputerPart{
public ComputerPart[] computerParts;
public Computer() {
this.computerParts = new ComputerPart[]{new Mouse(), new Keyboard()};
}
@Override
public void accept(Visitor visitor) {
for (ComputerPart computerPart : computerParts){
computerPart.accept(visitor);
}
visitor.visitComputer(this);
}
}
interface Visitor{
public void visitMouse(ComputerPart computerPart);
public void visitKeyboard(ComputerPart computerPart);
public void visitComputer(ComputerPart computerPart);
}
class RealVisitor implements Visitor{
@Override
public void visitComputer(ComputerPart computerPart) {
System.out.println("computer");
}
@Override
public void visitKeyboard(ComputerPart computerPart) {
System.out.println("keyboard");
}
@Override
public void visitMouse(ComputerPart computerPart) {
System.out.println("mouse");
}
}
public class Test{
public static void main(String[] args){
ComputerPart computerPart = new Computer();
Visitor visitor = new RealVisitor();
computerPart.accept(visitor);
}
}