打字猴:1.70047804e+09
1700478040 }
1700478041
1700478042 }
1700478043
1700478044 这就是一个具体动作执行者,它在策略模式中是一个具体的算法,关心的是是否可以被替换;而在命令模式中,它则是一个具体、真实的命令执行者。我们再来看gzip接收者,如代码清单32-13所示。
1700478045
1700478046 代码清单32-13 gzip接收者
1700478047
1700478048 public class GzipReceiver implements IReceiver{
1700478049
1700478050 //gzip的压缩算法
1700478051
1700478052 public boolean compress(String source,String to){
1700478053
1700478054 System.out.println(source+”—>”+to+“GZIP压缩成功!”);
1700478055
1700478056 return true;
1700478057
1700478058 }
1700478059
1700478060 //gzip解压缩算法
1700478061
1700478062 public boolean uncompress(String source,String to){
1700478063
1700478064 System.out.println(source+”—>”+to+“GZIP解压缩成功!”);
1700478065
1700478066 return true;
1700478067
1700478068 }
1700478069
1700478070 }
1700478071
1700478072 大家可以这样思考这个问题,接收者就是厨房的厨师,具体要哪个厨师做这道菜则是餐馆的规章制度已经明确的,你让专做粤菜的师傅做一个剁椒鱼头,能做出好菜吗?在命令模式中,就是在抽象命令中定义了接收者的引用,然后在具体的实现类中确定要让哪个接收者进行处理。这就好比是客人点菜:我要一个剁椒鱼头,这就是一个命令,然后服务员(Inovker)接收到这个命令后,就开始执行,把这个命令指定给具体的执行者执行。
1700478073
1700478074 当然了,接收者这部分还可以这样设计,即按照职责设计接收者,比如压缩接收者、解压缩接收者,但接口需要稍稍改动,如代码清单32-14所示。
1700478075
1700478076 代码清单32-14 依照职责设计的接收者接口
1700478077
1700478078 public interface IReceiver{
1700478079
1700478080 //执行zip命令
1700478081
1700478082 public boolean zipExec(String source,String to);
1700478083
1700478084 //执行gzip命令
1700478085
1700478086 public boolean gzipExec(String source,String to);
1700478087
1700478088 }
1700478089
[ 上一页 ]  [ :1.70047804e+09 ]  [ 下一页 ]