是一种行为型的设计模式,将一些步骤的实现延迟到子类有些步骤是固定的可以抽取父类,在父类中实现各个步骤,并且在父类中定义一个流程控制方法,将某个容易发生变化的步骤定义为抽象方法,针对不同的子类实现不同的方法,最终子类调用父类的流程控制方法即可
java
public abstract class AbstractBank {
//办理业务方法 -- 模板方法
public void handle(){
this.offerNumber();
this.lineup();
this.business();
this.score();
}
//抽号
public void offerNumber(){
System.out.println("抽号");
}
//排队
public void lineup(){
System.out.println("排队");
}
//评分
public void score(){
System.out.println("评分");
}
//办理具体业务--抽象方法,由具体子类实现
public abstract void business();
}
java
public class StoreBusiness extends AbstractBank{
//办理的具体业务
public void business() {
System.out.println("我要存钱");
}
}
java
public class TransferBusiness extends AbstractBank{
//转账
public void business() {
System.out.println("我要转账");
}
}
java
public class Test {
public static void main(String[] args) {
StoreBusiness storeBusiness = new StoreBusiness();
storeBusiness.handle();
System.out.println("===================================");
TransferBusiness transferBusiness = new TransferBusiness();
transferBusiness.handle();
}
}
总结:模板⽅法模式将算法的不变部分被封装在模板⽅法中,⽽可变部分算法由⼦类继承实现,这样做可以很好的提⾼代 码的复⽤性,但是当算法的框架发⽣变化时,可能需要修改模板类,这也会影响到所有的⼦类