本文移到垃圾桶,参考 3.3 模板方法模式(5.10)。
本文综述模板方法模式。
- GoF在这个模式的介绍中,值得领会的话是:“模板方法非常基本,它们几乎可以在任何一个抽象类中找到。”,“模板方法是一种代码复用的基本技术。它们在类库中尤为重要,它们提取了类库中的公共行为”。忽略这一点,所有关于这个模式的其他文字的注解版的解说,都是鹦鹉学舌。
- GoF在这个模式的介绍中,提到的IoC、好莱坞法则和钩子,yqj2065认为他们是在找抽。参考什么是好莱坞法则
所以,对于传统的模板方法模式的解说——GoF的注解版的解说,yqj2065嗤之以鼻。
1.模板方法模式与策略模式
如果模板方法中只有一个可变的部分,模板方法模式还原为策略模式。因此模板方法模式可以视为策略模式的简单推论:可变部分由一到多。
package callBack.templateMethod;
/**
* 求和函数
*
* @author (yqj2065)
* @version (0.1)
*/
public abstract class Sum{
public final double getSum(int a,int b){
double sum=0;
for(int i =a;i<=b; i=next(i)){
sum+=item(i);
}
return sum;
}
public abstract int next(int i) ;
public abstract double item(int x);
}
这个例子中,如果
只有一个可变的部分(不管是抽象方法还是空方法,或者GoF的什么钩子方法),我们将这个例子称为使用了策略模式(例如将