打字猴:1.700478109e+09
1700478109
1700478110 System.out.println(source+”—>”+to+“ZIP压缩成功!”);
1700478111
1700478112 return true;
1700478113
1700478114 }
1700478115
1700478116 }
1700478117
1700478118 代码清单32-16 解压缩接收者
1700478119
1700478120 public class UncompressReceiver implements IReceiver{
1700478121
1700478122 //执行gzip解压缩命令
1700478123
1700478124 public boolean gzipExec(String source,String to){
1700478125
1700478126 System.out.println(source+”—>”+to+“GZIP解压缩成功!”);
1700478127
1700478128 return true;
1700478129
1700478130 }
1700478131
1700478132 //执行zip解压缩命令
1700478133
1700478134 public boolean zipExec(String source,String to){
1700478135
1700478136 System.out.println(source+”—>”+to+“ZIP解压缩成功!”);
1700478137
1700478138 return true;
1700478139
1700478140 }
1700478141
1700478142 }
1700478143
1700478144 剩下的工作就是对抽象命令、具体命令稍作修改,这里不再赘述。为什么要在这里增加一个分支描述呢?这是为了与策略模式对比,在命令模式中,我们可以把接收者设计得与策略模式的算法相同,也可以不相同。我们按照职责设计的接口就不适用于策略模式,不可能封装一个叫做压缩的算法类,然后在类中提供两种不同格式的压缩功能,这违背了策略模式的意图——封装算法,为什么呢?如果要增加一个rar压缩算法,该怎么办呢?修改抽象算法?这是绝对不允许的!那为什么命令模式就是允许的呢?因为命令模式着重于请求者和接收者解耦,你管我接收者怎么变化,只要不影响请求者就成,这才是命令模式的意图。
1700478145
1700478146 命令、接收者都具备了,我们再来封装一个命令的调用者,如代码清单32-17所示。
1700478147
1700478148 代码清单32-17 调用者
1700478149
1700478150 public class Invoker{
1700478151
1700478152 //抽象命令的引用
1700478153
1700478154 private AbstractCmd cmd;
1700478155
1700478156 public Invoker(AbstractCmd_cmd){
1700478157
1700478158 this.cmd=_cmd;
[ 上一页 ]  [ :1.700478109e+09 ]  [ 下一页 ]