TemplateMethod 模板方法模式:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。
大白话:去银行办理业务,一共有4个流程: 取号,排队,办理具体业务,对工作人员评价。其中取号,排队,评价是固定的,每个人去银行办理业务都要经历这三个步骤。但是办理具体业务是不同的:有的人取款,有的存款,有的咨询等等。
那么就可以定义一个父类(抽象类),把固定的步骤,流程实现了。不能固定的业务逻辑,让子类去实现。
实例:
public class TemplateMethod {
public static void main(String[] args) {
childClass c = new childClass();
c.template();
}
}
abstract class bank{
//模板方法
public void template(){
quhao();
paidui();
dealwith();
pingjai();
}
public void quhao(){
System.out.println("取号");
}
public void paidui(){
System.out.println("排队");
}
public abstract void dealwith(); //办理业务这里是抽象方法,子类实现
public void pingjai(){
System.out.println("评价");
}
}
class childClass extends bank{
@Override
public void dealwith() {
System.out.println("子类办理业务");
}
// 实际如果对固定方法有些改动,这里也可以重写父类中固定步骤的方法
@Override
public void quhao(){
System.out.println("子类重写《父类取号》方法");
}
}
打印结果:
子类重写《父类取号》方法
排队
子类办理业务
评价