打字猴:1.700460325e+09
1700460325 this.gamePlayer.login(user,password);
1700460326
1700460327 }
1700460328
1700460329 //代练升级
1700460330
1700460331 public void upgrade(){
1700460332
1700460333 this.gamePlayer.upgrade();
1700460334
1700460335 }
1700460336
1700460337 }
1700460338
1700460339 仅仅修改了构造函数,传递进来一个代理者名称,即可进行代理,在这种改造下,系统更加简洁了,调用者只知道代理存在就可以,不用知道代理了谁。同时场景类也稍作改动,如代码清单12-12所示。
1700460340
1700460341 代码清单12-12 普通代理的场景类
1700460342
1700460343 public class Client{
1700460344
1700460345 public static void main(String[]args){
1700460346
1700460347 //然后再定义一个代练者
1700460348
1700460349 IGamePlayer proxy=new GamePlayerProxy(“张三”);
1700460350
1700460351 //开始打游戏,记下时间戳
1700460352
1700460353 System.out.println(“开始时间是:2009-8-25 10:45”);
1700460354
1700460355 proxy.login(“zhangSan”,“password”);
1700460356
1700460357 //开始杀怪
1700460358
1700460359 proxy.killBoss();
1700460360
1700460361 //升级
1700460362
1700460363 proxy.upgrade();
1700460364
1700460365 //记录结束游戏时间
1700460366
1700460367 System.out.println(“结束时间是:2009-8-26 03:40”);
1700460368
1700460369 }
1700460370
1700460371 }
1700460372
1700460373 运行结果完全相同。在该模式下,调用者只知代理而不用知道真实的角色是谁,屏蔽了真实角色的变更对高层模块的影响,真实的主题角色想怎么修改就怎么修改,对高层次的模块没有任何的影响,只要你实现了接口所对应的方法,该模式非常适合对扩展性要求较高的场合。当然,在实际的项目中,一般都是通过约定来禁止new一个真实的角色,这也是一个非常好的方案。
1700460374
[ 上一页 ]  [ :1.700460325e+09 ]  [ 下一页 ]