打字猴:1.700477759e+09
1700477759
1700477760 图32-1 策略模式实现压缩算法的类图
1700477761
1700477762 在类图中,我们的侧重点是zip压缩算法和gzip压缩算法可以互相替换,一个文件或者目录可以使用zip压缩,也可以使用gzip压缩,选择哪种压缩算法是由高层模块(实际操作者)决定的。我们来看一下代码实现。先看抽象的压缩算法,如代码清单32-1所示。
1700477763
1700477764 代码清单32-1 抽象压缩算法
1700477765
1700477766 public interface Algorithm{
1700477767
1700477768 //压缩算法
1700477769
1700477770 public boolean compress(String source,String to);
1700477771
1700477772 //解压缩算法
1700477773
1700477774 public boolean uncompress(String source,String to);
1700477775
1700477776 }
1700477777
1700477778 每一个算法要实现两个功能:压缩和解压缩,传递进来一个绝对路径source,compress把它压缩到to目录下,uncompress则进行反向操作——解压缩,这两个方法一定要成对地实现,为什么呢?用gzip解压缩算法能解开zip格式的压缩文件吗?我们分别来看两种不同格式的压缩算法,zip、gzip压缩算法分别如代码清单32-2、32-3所示。
1700477779
1700477780 代码清单32-2 zip压缩算法
1700477781
1700477782 public class Zip implements Algorithm{
1700477783
1700477784 //zip格式的压缩算法
1700477785
1700477786 public boolean compress(String source,String to){
1700477787
1700477788 System.out.println(source+”—>”+to+“ZIP压缩成功!”);
1700477789
1700477790 return true;
1700477791
1700477792 }
1700477793
1700477794 //zip格式的解压缩算法
1700477795
1700477796 public boolean uncompress(String source,String to){
1700477797
1700477798 System.out.println(source+”—>”+to+“ZIP解压缩成功!”);
1700477799
1700477800 return true;
1700477801
1700477802 }
1700477803
1700477804 }
1700477805
1700477806 代码清单32-3 gzip压缩算法
1700477807
1700477808 public class Gzip implements Algorithm{
[ 上一页 ]  [ :1.700477759e+09 ]  [ 下一页 ]