学习DP--2.模版方法模式
模版方法模式
这个模式不是在看书的时候学到的,而我自己最近在做一个小应用的时候,重构完代码后总结的,翻开书一看,才知道,咦,这原来是模版方法模式。想想,《设计模式》这本书的作者们也是从大量的实践中总结出这些经验,如果我们一开始能够尝试的去使用这些经验,也许可以减少我们走的弯路。
记录一下我代码的重构过程和模版方法模式:
一开始的类有:
DataSource代表了界面上所需数据的来源,提供加载,操作,保存数据的方法。BaseDataSource作为基类,定义了一些抽象方法让子类实现。后来子类要完成一个判断,要是有网络连接就优先使用网络下载,如果没有网络连接再使用本地数据。于是在子类中出现这样的代码:
父类的代码如下:
public class Sort{ public final void sort(int[]array){ int length = array.length; int lengthsub1 = length - 1; for(int i = 0;i<lengthsub1;i++){ for(int j = i;j<length;j++){ if(compare(array[i],array[j])>0){ int temp = array[i]; array[i] = array[j]; array[j] = temp; } } } } /** * if a larger that b,return a positive number,if b larger than a return negative number,if a equal to b,return 0. */ protected abstract int compare(int a,int b);}//由小到大public void SortBySmall extends Sort{ @Override protected int compare(int a,int b){ if(a > b) return 1; else if(a < b) return -1; else return 0; }}//由大到小public void SortByLarge extends Sort{ @Override protected int compare(int a,int b){ if(a > b) return -1; else if(a < b) return 1; else return 0; }}
我是菜鸟,我犯错我开心,希望大家能不吝指教,谢谢啦!
转载请注明来自:http://zhenzxie.iteye.com/blog