定义
定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。
使用场景
- 多个子类有公有的方法,并且逻辑基本相同。
- 重要、复杂的算法,可以把核心算法设计为模版方法,相关细节功能交给子类实现。
Java 代码示例
public abstract class Template {
protected void stepOne() {
}
protected void stepTwo() {
}
public void execute() {
stepOne();
stepTwo();
}
}
public class ImplA extends Template {
@Override
protected void stepOne() {
System.out.println("step one from template a");
}
}
public class ImplB extends Template {
@Override
protected void stepTwo() {
System.out.println("step two from template b");
}
}