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