打字猴:1.70046071e+09
1700460710
1700460711
1700460712
1700460713
1700460714 设计模式之禅 12.4.3 代理是有个性的
1700460715
1700460716 一个类可以实现多个接口,完成不同任务的整合。也就是说代理类不仅仅可以实现主题接口,也可以实现其他接口完成不同的任务,而且代理的目的是在目标对象方法的基础上作增强,这种增强的本质通常就是对目标对象的方法进行拦截和过滤。例如游戏代理是需要收费的,升一级需要5元钱,这个计算功能就是代理类的个性,它应该在代理的接口中定义,如图12-6所示。
1700460717
1700460718
1700460719
1700460720
1700460721 图12-6 代理类的个性
1700460722
1700460723 增加了一个IProxy接口,其作用是计算代理的费用。我们先来看IProxy接口,如代码清单12-19所示。
1700460724
1700460725 代码清单12-19 代理类的接口
1700460726
1700460727 public interface IProxy{
1700460728
1700460729 //计算费用
1700460730
1700460731 public void count();
1700460732
1700460733 }
1700460734
1700460735 仅仅一个方法,非常简单,看GamePlayerProxy带来的变化,如代码清单12-20所示。
1700460736
1700460737 代码清单12-20 代理类
1700460738
1700460739 public class GamePlayerProxy implements IGamePlayer,IProxy{
1700460740
1700460741 private IGamePlayer gamePlayer=null;
1700460742
1700460743 //通过构造函数传递要对谁进行代练
1700460744
1700460745 public GamePlayerProxy(IGamePlayer_gamePlayer){
1700460746
1700460747 this.gamePlayer=_gamePlayer;
1700460748
1700460749 }
1700460750
1700460751 //代练杀怪
1700460752
1700460753 public void killBoss(){
1700460754
1700460755 this.gamePlayer.killBoss();
1700460756
1700460757 }
1700460758
1700460759 //代练登录
[ 上一页 ]  [ :1.70046071e+09 ]  [ 下一页 ]