1 简介
模板方法模式(Template Method Pattern)定义:定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构,即可重定义该算法的某些特定步骤。
- 模板方法(Template Method):一个模板方法是定义在抽象类中的、把基本方法组合在一起,形成一个总算法或一个总行为的方法。模板方法是一个具体方法,它给出了一个顶级逻辑的骨架,而逻辑的组成步骤可以是具体方法,也可以是抽象方法,在子类中一般不加修改地完全继承过来。
- 基本方法(Primitive Method):一般分为抽象方法(Abstract Method)、具体方法(Concrete Method)、钩子方法(Hook Method)。钩子方法一般是一个空实现的方法,或一个返回类型为 boolean 型、方法名为 isXXX() 的非空默认实现方法,如下:
public void primitiveOperation() { } //空实现的钩子方法
public void isPrint(){ //默认实现的钩子方法
return true;
}
2 代码
(1)抽象类(AbstractClass)
public abstract class AbstractClass {
public void templateMethod() { //模板方法
}
public void primitiveOperation1() { //基本方法:具体方法
//具体实现
}
public abstract void primitiveOperation2(); //基本方法:抽象方法
public void primitiveOperation3() { } //基本方法:钩子方法
}
(2)具体类(ConcreteClass)
public class ConcreteClass extends AbstractClass{
@Override
public void primitiveOperation2() {
//实现抽象方法
}
@Override
public void primitiveOperation3() {
//重写钩子方法
}
}