打字猴:1.70046091e+09
1700460910 ClassLoader cl=player.getClass().getClassLoader();
1700460911
1700460912 //动态产生一个代理者
1700460913
1700460914 IGamePlayer proxy=(IGamePlayer)Proxy.newProxyInstance(cl,new
1700460915
1700460916 Class[]{IGamePlayer.class},handler);
1700460917
1700460918 //登录
1700460919
1700460920 proxy.login(“zhangSan”,“password”);
1700460921
1700460922 /开始杀怪
1700460923
1700460924 proxy.killBoss();
1700460925
1700460926 //升级
1700460927
1700460928 proxy.upgrade();
1700460929
1700460930 //记录结束游戏时间
1700460931
1700460932 System.out.println(“结束时间是:2009-8-26 03:40”);
1700460933
1700460934 }
1700460935
1700460936 }
1700460937
1700460938 很奇怪是吗?不要着急,继续看下去。其运行结果如下:
1700460939
1700460940 开始时间是:2009-8-25 10:45
1700460941
1700460942 登录名为zhangSan的用户张三登录成功!
1700460943
1700460944 张三在打怪!
1700460945
1700460946 张三又升了一级!
1700460947
1700460948 结束时间是:2009-8-26 03:40
1700460949
1700460950 我们还是让代练者帮我们打游戏,但是我们既没有创建代理类,也没有实现IGamePlayer接口,这就是动态代理。别急,动态代理可不仅仅就这么多内容,还有更重要的,如果想让游戏登录后发一个信息给我们,防止账号被人盗用嘛,该怎么处理?直接修改被代理类GamePlayer?这不是一个好办法,好办法如代码清单12-24所示。
1700460951
1700460952 代码清单12-24 修正后的动态代理
1700460953
1700460954 public class GamePlayIH implements InvocationHandler{
1700460955
1700460956 //被代理者
1700460957
1700460958 Class cls=null;
1700460959
[ 上一页 ]  [ :1.70046091e+09 ]  [ 下一页 ]