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 ]
[
下一页 ]