http://www.cnblogs.com/java-my-life/archive/2012/05/14/2495235.html
该博客详细介绍了模板方法模式。个人觉得模板方法模式的使用流程
1.创建一个抽象类,抽象类中包含一个模板方法。
2.模板方法是会被重复调用的代码,其中又包含多个逻辑函数
3.模板方法中的逻辑函数又分为普通函数(在抽象类中实现,是定制的方法),定制方法(抛给外部的方法),由基类去实现的定制性的功能。
4.提供一个钩子方法,该方法为空方法或者带有boolean类型返回值的方法,通过子类重写该方法来起到控制模板方法的业务流程
public abstract class AbstractTemplate {
/**
* 模板方法
*/
public void templateMethod(){
//调用基本方法
abstractMethod();
if(hookMethod()){
concreteMethod();
}
}
/**
* 定制方法的声明(由子类实现)
*/
protected abstract void abstractMethod();
/**
* 钩子方法(空方法)
*/
protected boolean hookMethod(){
return true;
}
/**
* 基本方法(已经实现)
*/
private final void concreteMethod(){
//业务相关的代码
}
}
public class ConcreteTemplate extends AbstractTemplate{
//基本方法的实现
@Override
public void abstractMethod() {
//业务相关的代码
}
//重写父类的方法
@Override
public boolean hookMethod() {
return false;
}
}
使用
AbstractTemplate a1=new ConcreteTemplate ();
a1.templateMethod();