1.定义#
定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
模板模式仅仅使用了继承机制,将共性的部分提取到父类中实现,子类只实现有差别的部分。
2.类图#
3.实现#
3.1抽象模板类##
public abstract class AbstractClass(){
protected abstract void doSomething();
protected abstract void doAnything();
public void templateMethod(){
//调用子类实现的方法
this.doAnything();
this.doSomething();
}
}
3.2具体模板类##
pbulic class ConcreteClass1 extends AbstractClass{
protected void doAnything(){
//业务逻辑
}
protected void doSomething(){
//业务逻辑
}
}
4.应用#
1.多个子类有公有的方法,并且逻辑基本相同。
2.重要、复杂的算法,可以把核心算法设计为模板方法。
3.重构时,把相同的代码抽取到父类中,然后通过钩子函数约束其行为。