1.设计模式:
解决一些问题时的固定思路,也就是代码设计思路经验的总结
针对某些情况,在父类中指定一个模板,然后根据具体情况,在子类中灵活的具体实现该模板
2.模板模式的实现步骤:
1.定义抽象父类为模板
2.在父类中定义”模板方法“ --> 普通方法(通用模板)+抽象方法(填充模板)
3.子类继承父类,重写抽象方法(填充父类的模板)
4.测试类
创建子类对象,通过子类调用父类的 普通方法 和 抽象方法
4.实现思路:
案例:司机开车
假如,现在需要定义两个司机类,一个老司机,一个新司机
新司机和老司机都有开车的功能,开车的步骤都一样,只是驾驶时的姿势有点不同
新司机: 老司机:
开门 开门
点火 点火
双手紧握方向盘 右手紧握方向盘左手抽烟
刹车 刹车
熄火 熄火
这个时候,我们可以将固定的流程写道父类中,不同的地方就定义成抽象方法,让不同的子类去重写
开车的方法:步骤都是一样的,使用通用模板(普通方法)
开车姿势的方法:老司机和新司机是不一样的,所以使用填充模板(抽象方法),各自实现不同的姿势开车
4.实现代码块:
//抽象父类
public abstract class Driver {
//通用模板(普通方法)-->开车
public void driverCar(){
System.out.println("开门");
System.out.println("点火");
//中间的这个步骤是开车的姿势
ziShi();
System.out.println("刹车");
System.out.println("熄火");
}
//填充模板(抽象方法) -->开车姿势
public abstract void ziShi();
}
//新司机类
class NewDriver extends Driver {
@Override
public void ziShi() {
System.out.println("双手紧握方向盘");
}
}
//老司机类
class OldDriver extends Driver{
@Override
public void ziShi() {
System.out.println("左手握方向盘右手抽烟");
}
}
//测试类
public static void main(String[] args) {
//创建新司机对象
NewDriver newDriver = new NewDriver();
newDriver.driverCar();
OldDriver oldDriver = new OldDriver();
oldDriver.driverCar();
}
}