模版方法模式介绍
模版方法的写法很简单,使用的场景是,抽象类中的某个方法(称为模版方法)调用了抽象类中的其他基本方法,那么在继承这个抽象类时,就不必重写这个模版方法,而只需要重写其他基本方法。
模版方法样例
有这样的一个场景,在生产宝马车之前我们要有一个车的基础模型,这个模型规定了宝马车的基本功能,如鸣笛、启动、停车,模型还规定了要对宝马车进行测试:即调用鸣笛、启动、停车的功能,这样测试方法就可以当做一个模版方法,在父类中写了之后,子类不需要重写。
宝马模型定义:
一般模版方法都用final修饰,不允许被重写。
public abstract class BWMModel {
protected abstract void alarm(); //鸣笛
protected abstract void start(); //启动
protected abstract void stop(); //停车
protected abstract boolean isRoadster(); //是否为跑车
protected abstract void drift(); //漂移 只有跑车车型才能漂移
//模版方法,测试车辆的启动、鸣笛、停车功能
public final void testThisCar() {
this.start();
this.alarm();
if(isRoadster()) {
drift();
}
this.stop();
}
}
具体的宝马车:
public class BWMCar1 extends BWMModel {
protected void alarm() {
System.out.println("鸣笛");
}
protected void start() {
System.out.println("启动");
}
protected void stop() {
System.out.println("停车");
}
protected boolean isRoadster() {
return true;
}
protected void drift() {
System.out.println("闪电漂移~");
}
}