打字猴:1.700477844e+09
1700477844 //构造函数传递具体的算法
1700477845
1700477846 public Context(Algorithm_al){
1700477847
1700477848 this.al=_al;
1700477849
1700477850 }
1700477851
1700477852 //执行压缩算法
1700477853
1700477854 public boolean compress(String source,String to){
1700477855
1700477856 return al.compress(source,to);
1700477857
1700477858 }
1700477859
1700477860 //执行解压缩算法
1700477861
1700477862 public boolean uncompress(String source,String to){
1700477863
1700477864 return al.uncompress(source,to);
1700477865
1700477866 }
1700477867
1700477868 }
1700477869
1700477870 也是非常简单,指定一个算法,执行该算法,一个标准的策略模式就编写完毕了。请读者注意,这里虽然有两个算法Zip和Gzip,但是对调用者来说,这两个算法没有本质上的区别,只是“形式”上不同,什么意思呢?从调用者来看,使用哪一个算法都无所谓,两者完全可以互换,甚至用一个算法替代另外一个算法。我们继续看调用者是如何调用的,如代码清单32-5所示。
1700477871
1700477872 代码清单32-5 场景类
1700477873
1700477874 public class Client{
1700477875
1700477876 public static void main(String[]args){
1700477877
1700477878 //定义环境角色
1700477879
1700477880 Context context;
1700477881
1700477882 //对文件执行zip压缩算法
1700477883
1700477884 System.out.println(”========执行算法========”);
1700477885
1700477886 context=new Context(new Zip());
1700477887
1700477888 /*
1700477889
1700477890 *算法替换
1700477891
1700477892 *context=new Context(new Gzip());
1700477893
[ 上一页 ]  [ :1.700477844e+09 ]  [ 下一页 ]