打字猴:1.700478159e+09
1700478159
1700478160 }
1700478161
1700478162 //执行命令
1700478163
1700478164 public boolean execute(String source,String to){
1700478165
1700478166 return cmd.execute(source,to);
1700478167
1700478168 }
1700478169
1700478170 }
1700478171
1700478172 调用者非常简单,只负责把命令向后传递,当然这里也可以进行一定的拦截处理,我们暂时用不到就不做处理了。我们来看场景类是如何描述这个场景的,如代码清单32-18所示。
1700478173
1700478174 代码清单32-18 场景类
1700478175
1700478176 public class Client{
1700478177
1700478178 public static void main(String[]args){
1700478179
1700478180 //定义一个命令,压缩一个文件
1700478181
1700478182 AbstractCmd cmd=new ZipCompressCmd();
1700478183
1700478184 /*
1700478185
1700478186 *想换一个?执行解压命令
1700478187
1700478188 *AbstractCmd cmd=new ZipUncompressCmd();
1700478189
1700478190 */
1700478191
1700478192 //定义调用者
1700478193
1700478194 Invoker invoker=new Invoker(cmd);
1700478195
1700478196 //我命令你对这个文件进行压缩
1700478197
1700478198 System.out.println(”========执行压缩命令========”);
1700478199
1700478200 invoker.execute(“c:\windows”,“d:\windows.zip”);
1700478201
1700478202 }
1700478203
1700478204 }
1700478205
1700478206 想新增一个命令?当然没有问题,只要重新定义一个命令就成,命令改变了,高层模块只要调用它就成。请注意,这里的程序还有点欠缺,没有与文件的后缀名绑定,不应该出现使用zip压缩命令产生一个.gzip后缀的文件名,读者在实际应用中可以考虑与文件后缀名之间建立关联。
1700478207
1700478208 通过以上例子,我们看到命令模式也实现了文件的压缩、解压缩的功能,它的实现是关注了命令的封装,是请求者与执行者彻底分开,看看我们的程序,执行者根本就不用了解命令的具体执行者,它只要封装一个命令——“给我用zip格式压缩这个文件”就可以了,具体由谁来执行,则由调用者负责,如此设计后,就可以保证请求者和执行者之间可以相互独立,各自发展而不相互影响。
[ 上一页 ]  [ :1.700478159e+09 ]  [ 下一页 ]