package visitor.侠客行; public interface 掌门人 { }
package visitor.侠客行; public class 没做过坏事的掌门 implements 掌门人 { }
package visitor.侠客行; public class 做过坏事的掌门 implements 掌门人 { }
package visitor.侠客行; import java.util.arraylist; import java.util.list; public class 侠客岛 { private list<掌门人> 掌门人list = new arraylist<>(); public void add掌门人(掌门人 某掌门) { 掌门人list.add(某掌门); } public void 赏善罚恶(string 处理人) { if (处理人.equals("张三")) { for (掌门人 某掌门x : 掌门人list) { if (某掌门x instanceof 没做过坏事的掌门) { system.out.println("好掌门, 张三: 赏赐没做过坏事的掌门"); } else if (某掌门x instanceof 做过坏事的掌门) { system.out.println("坏掌门, 张三: 不管做过坏事的掌门"); } system.out.println(); } } else if (处理人.equals("李四")) { for (掌门人 某掌门x : 掌门人list) { if (某掌门x instanceof 没做过坏事的掌门) { system.out.println("好掌门, 李四: 不管没做过坏事的掌门"); } else if (某掌门x instanceof 做过坏事的掌门) { system.out.println("坏掌门, 李四: 惩罚做过坏事的掌门"); } system.out.println(); } } } }
package visitor.新版侠客行; public interface 掌门人 { } package visitor.新版侠客行; public class 没做过坏事的掌门 implements 掌门人 { } package visitor.新版侠客行; public class 做过坏事的掌门 implements 掌门人 { }
package visitor.新版侠客行; public interface 访问使者 { void 拜访(做过坏事的掌门 坏人); void 拜访(没做过坏事的掌门 好人); }
package visitor.新版侠客行; public class 张三 implements 访问使者 { @override public void 拜访(没做过坏事的掌门 好人) { system.out.println("好掌门, 张三: 赏赐没做过坏事的掌门"); } @override public void 拜访(做过坏事的掌门 坏人) { system.out.println("坏掌门, 张三: 不管做过坏事的掌门"); } }
package visitor.新版侠客行; public class 李四 implements 访问使者 { @override public void 拜访(没做过坏事的掌门 好人) { system.out.println("好掌门, 李四: 不管没做过坏事的掌门"); } @override public void 拜访(做过坏事的掌门 坏人) { system.out.println("坏掌门, 李四: 惩罚做过坏事的掌门"); } }
package visitor.新版侠客行; import java.util.arraylist; import java.util.list; public class 侠客岛 { private list<掌门人> 掌门人list = new arraylist<>(); public void add掌门人(掌门人 某掌门) { 掌门人list.add(某掌门); } public void 赏善罚恶(访问使者 使者) { for (掌门人 某掌门x : 掌门人list) { if (某掌门x instanceof 没做过坏事的掌门) { 使者.拜访((没做过坏事的掌门)某掌门x); } else if (某掌门x instanceof 做过坏事的掌门) { 使者.拜访((做过坏事的掌门)某掌门x); } system.out.println(); } } }
package visitor.新版侠客行; public class test { public static void main(string[] args){ 侠客岛 善善罚恶二使 = new 侠客岛(); 善善罚恶二使.add掌门人(new 做过坏事的掌门()); 善善罚恶二使.add掌门人(new 没做过坏事的掌门()); 善善罚恶二使.add掌门人(new 没做过坏事的掌门()); 善善罚恶二使.add掌门人(new 做过坏事的掌门()); 访问使者 张三 = new 张三(); 访问使者 李四 = new 李四(); 善善罚恶二使.赏善罚恶(李四); 善善罚恶二使.赏善罚恶(张三); } }
package visitor.新版侠客行; public class 龙木岛主 implements 访问使者 { @override public void 拜访(做过坏事的掌门 坏人) { system.out.println("龙木岛主,惩罚坏人"); } @override public void 拜访(没做过坏事的掌门 好人) { system.out.println("龙木岛主,赏赐好人"); } }
package visitor.最新版本侠客行; public interface 掌门人 { void 接受拜访(访问使者 赏善使者); }
package visitor.最新版本侠客行; public class 没做过坏事的掌门 implements 掌门人 { @override public void 接受拜访(访问使者 赏善罚恶使者) { 赏善罚恶使者.拜访(this); } }
package visitor.最新版本侠客行; public class 做过坏事的掌门 implements 掌门人 { @override public void 接受拜访(访问使者 赏善罚恶使者) { 赏善罚恶使者.拜访(this); } }
package visitor.最新版本侠客行; public interface 访问使者 { void 拜访(做过坏事的掌门 坏人); void 拜访(没做过坏事的掌门 好人); } package visitor.最新版本侠客行; public class 张三 implements 访问使者 { @override public void 拜访(没做过坏事的掌门 好人) { system.out.println("好掌门, 张三: 赏赐没做过坏事的掌门"); } @override public void 拜访(做过坏事的掌门 坏人) { system.out.println("坏掌门, 张三: 不管做过坏事的掌门"); } }
package visitor.最新版本侠客行; public class 李四 implements 访问使者 { @override public void 拜访(没做过坏事的掌门 好人) { system.out.println("好掌门, 李四: 不管没做过坏事的掌门"); } @override public void 拜访(做过坏事的掌门 坏人) { system.out.println("坏掌门, 李四: 惩罚做过坏事的掌门"); } }
package visitor.最新版本侠客行; import java.util.arraylist; import java.util.list; public class 侠客岛 { private list<掌门人> 掌门人list = new arraylist<>(); public void add掌门人(掌门人 某掌门) { 掌门人list.add(某掌门); } public void 赏善罚恶(访问使者 使者) { for (掌门人 某掌门x : 掌门人list) { 某掌门x.接受拜访(使者); system.out.println(); } } }
package visitor.最新版本侠客行; public class 龙木岛主 implements 访问使者 { @override public void 拜访(做过坏事的掌门 坏人) { system.out.println("龙木岛主,惩罚坏人"); } @override public void 拜访(没做过坏事的掌门 好人) { system.out.println("龙木岛主,赏赐好人"); } }
package visitor.最新版本侠客行; public class 不好不坏的掌门 implements 掌门人 { @override public void 接受拜访(访问使者 赏善罚恶使者) { 赏善罚恶使者.拜访(this); } }
package visitor; public class example { public static void main(string[] args) { a1 a1 = new a1(); a2 a2 = new a2(); a3 a3 = new a3(); b1 b1 = new b1(); b2 b2 = new b2(); b3 b3 = new b3(); b1.accept(a1); b1.accept(a2); b1.accept(a3); b2.accept(a1); b2.accept(a2); b2.accept(a3); b3.accept(a1); b3.accept(a2); b3.accept(a3); } } abstract class a { abstract void visit(b1 b1); abstract void visit(b2 b2); abstract void visit(b3 b3); } class a1 extends a { @override void visit(b1 b1) { system.out.println("a1 play with b1"); } @override void visit(b2 b2) { system.out.println("a1 play with b2"); } @override void visit(b3 b3) { system.out.println("a1 play with b3"); } } class a2 extends a { @override void visit(b1 b1) { system.out.println("a2 play with b1"); } @override void visit(b2 b2) { system.out.println("a2 play with b2"); } @override void visit(b3 b3) { system.out.println("a2 play with b3"); } } class a3 extends a { @override void visit(b1 b1) { system.out.println("a3 play with b1"); } @override void visit(b2 b2) { system.out.println("a3 play with b2"); } @override void visit(b3 b3) { system.out.println("a3 play with b3"); } } abstract class b { abstract void accept(a a); } class b1 extends b { @override void accept(a a) { a.visit(this); } } class b2 extends b { @override void accept(a a) { a.visit(this); } } class b3 extends b { @override void accept(a a) { a.visit(this); } }
如对本文有疑问, 点击进行留言回复!!
网友评论