探索Java设计模式:访问者模式

时间:2025-03-25 20:55:37
// 定义动物接口及具体动物类 interface Animal { void accept(AnimalOperation operation); } class Lion implements Animal { @Override public void accept(AnimalOperation operation) { operation.visit(this); } } class Tiger implements Animal { @Override public void accept(AnimalOperation operation) { operation.visit(this); } } // 定义访问者接口及具体访问者类 interface AnimalOperation { void visit(Lion lion); void visit(Tiger tiger); } class FeedVisitor implements AnimalOperation { @Override public void visit(Lion lion) { System.out.println("Feeding lion..."); } @Override public void visit(Tiger tiger) { System.out.println("Feeding tiger..."); } } class CleanVisitor implements AnimalOperation { @Override public void visit(Lion lion) { System.out.println("Cleaning lion's enclosure..."); } @Override public void visit(Tiger tiger) { System.out.println("Cleaning tiger's enclosure..."); } } // 客户端代码 public class Client { public static void main(String[] args) { Animal lion = new Lion(); Animal tiger = new Tiger(); AnimalOperation feedVisitor = new FeedVisitor(); AnimalOperation cleanVisitor = new CleanVisitor(); lion.accept(feedVisitor); // Feeding lion... tiger.accept(cleanVisitor); // Cleaning tiger's enclosure... } }