java设计模式参考文章:
Java设计模式实战,23种设计模式介绍以及在Java中的实现,Java设计模式, Java经典设计模式之五大创建型模式
## 定义 ##
- 定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法使子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
处理某个流程的骨架代码已经具备, 但其中某节点的具体实现暂不确定, 此时可采用模板方法, 将该节点的代码实现转移给子类完成. 即: 处理步骤在父类中定义好, 具体实现延迟到子类中定义.
代码举例
/**
* @author bwx
* @date 2017/11/29
* 抽象模板
*/
public abstract class MakeCar {
public abstract void makeHead();
public abstract void makeBody();
public abstract void makeTail();
public void make() {
this.makeHead();
this.makeBody();
this.makeTail();
}
}
/**
* @author bwx
* @date 2017/11/29
* 具体操作,延迟到子类实现
*/
public class MakeBus extends MakeCar {
public void makeHead() {
System.out.println("bus:makeHead");
}
public void makeBody() {
System.out.println("bus:makeBody");
}
public void makeTail() {
System.out.println("bus:makeTail");
}
}
/**
* @author bwx
* @date 2017/11/29
* 模板方法模式
*/
public class Main {
public static void main(String[] args) {
MakeCar bus = new MakeBus();
bus.make();
}
}
## 优点 ##
- 可以通过在抽象摸吧能定义模板方法给出成熟的算法步骤,同时又不限制步骤的细节,具体模板实现算法细节不会改变整个算法的骨架。
- 在抽象模板模式中,可以通过钩子方法对某些步骤进行挂钩,具体模板通过钩子可以选择算法骨架中的某些步骤。