- 当我们写一个文档时(如需求文档)通常首先要找一个模板,模板里会清楚的写着要写几大模块且说明这些模块的先后顺序。我们再照着模板填充每一模块的具体内容。
- 定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
- 基本方法:由子类实现的方法,并且在模板方法中被调用。
- 模板方法:一个框架,实现对基本方法的调度,完成固定的逻辑。为防止恶意操作,一般模板方法会加final关键字,不允许覆盖。
- 父类模板中用一个方法规定了其所有子类要执行的一系列方法的顺序,即定义中所说的算法的框架。在高层的执行步骤是确定的(即每一步要实现什么功能),但具体执行的操作,每个子类均有自己的实现(即每一步具体如何实现,各子类均不同)。
- 代码
public abstract class Model {
protected abstract void start();//protected
protected abstract void alarm();
protected abstract void stop();
public final void run(){//final
this.start();
this.alarm();
this.stop();
}
}
public class ModelA extends Model{
protected void start() {
System.out.println("车辆A启动");
}
protected void alarm() {
System.out.println("车辆A鸣笛");
}
protected void stop() {
System.out.println("车辆A刹车");
}
}
public class ModelB extends Model{
protected void start() {
System.out.println("车辆B启动");
}
protected void alarm() {
System.out.println("车辆B鸣笛");
}
protected void stop() {
System.out.println("车辆B刹车");
}
}
public class Client {
public static void main(String[] args){
Model modelA = new ModelA();
modelA.run();
Model modelB = new ModelB();
modelB.run();
}
}