模板方法:在一个方法中定义一个算法的骨架,将具体的实现步骤在是现在子类中,模板方法可以使得自雷在不改变算法结构的情况下,实现具体的逻辑。
比如,用户去银行办理业务有三个步骤,取号、办理业务,回评。对于存款业务就是:取号、存款、回评。对于取款业务就是:取号、取款、回评。所以看的出来业务的实现算法逻辑是相同的。代买实现如下
1.抽取方法创建共同的抽象父类
/**
* 模板设计的的父类
* @Author: wangxh
*/
public abstract class AbstractTemplate {
/*
* final 修饰不允许该方法被重写
*/
protected final void doBusiness(){
getNum();
doDeal();
doComment();
}
public void getNum(){
System.out.println("取号");
}
public abstract void doDeal();
public void doComment(){
System.out.println("服务评价");
}
}
2.取款业务实现
/**
* @Author: wangxh
*/
public class TakeCash extends AbstractTemplate{
@Override
public void doDeal() {
System.out.println("取钱");
}
}
3.存款业务
/**
* @Author: wangxh
*/
public class SaveCash extends AbstractTemplate{
@Override
public void doDeal() {
System.out.println("存钱");
}
}
public class TestApp {
public static void main(String[] args) {
AbstractTemplate saveCash = new SaveCash();
saveCash.doBusiness();
System.out.println("---------");
TakeCash takeCash = new TakeCash();
takeCash.doBusiness();
}
}
取号
存钱
服务评价
---------
取号
取钱
服务评价
因此在模板方法中我们可以把相同步骤的抽取出一个相同的抽象方法,有他的子类去实现具体的实现方法。模板方法具有良好的复用性,以便于子类实现。