1700460760
1700460761
public void login(String user,String password){
1700460762
1700460763
this.gamePlayer.login(user,password);
1700460764
1700460765
}
1700460766
1700460767
//代练升级
1700460768
1700460769
public void upgrade(){
1700460770
1700460771
this.gamePlayer.upgrade();
1700460772
1700460773
this.count();
1700460774
1700460775
}
1700460776
1700460777
//计算费用
1700460778
1700460779
public void count(){
1700460780
1700460781
System.out.println(“升级总费用是:150元”);
1700460782
1700460783
}
1700460784
1700460785
}
1700460786
1700460787
实现了IProxy接口,同时在upgrade方法中调用该方法,完成费用结算,其他的类都没有任何改动,运行结果如下:
1700460788
1700460789
开始时间是:2009-8-25 10:45
1700460790
1700460791
登录名为zhangSan的用户张三登录成功!
1700460792
1700460793
张三在打怪!
1700460794
1700460795
张三又升了一级!
1700460796
1700460797
升级总费用是:150元
1700460798
1700460799
结束时间是:2009-8-26 03:40
1700460800
1700460801
好了,代理公司也赚钱了,我的游戏也升级了,皆大欢喜。代理类不仅仅是可以有自己的运算方法,通常的情况下代理的职责并不一定单一,它可以组合其他的真实角色,也可以实现自己的职责,比如计算费用。代理类可以为真实角色预处理消息、过滤消息、消息转发、事后处理消息等功能。当然一个代理类,可以代理多个真实角色,并且真实角色之间可以有耦合关系,读者可以自行扩展一下。
1700460802
1700460803
1700460804
1700460805
1700460806
设计模式之禅 12.4.4 虚拟代理
1700460807
1700460808
虚拟代理(Virual Proxy)听着很复杂,其实非常简单,我们只要把代理模式的通用代码稍微修改一下就成为虚拟代理,修改后的代理类如代码清单12-21所示。
1700460809
[
上一页 ]
[ :1.70046076e+09 ]
[
下一页 ]