模板方法主要用在步骤确定的情景中,比如你去银行办理业务,流程可能是
1、排队取号
2、具体业务办理
3、反馈评分
像这样的1,3步骤都是固定的,只有步骤2才需要具体处理,所以我们只关心步骤2 就可以了,就可以使用模板方法处理。
什么是模板方法呢?模板方法定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现。这样新的子类可以在不开遍一个算法结构的前提下重新定义该算法的的某些特定步骤。他的核心是:处理步骤父类中定义好,具体实现延迟到子类中定义。
首先定义一个抽象类,里面的抽象方法是需要子类重新定义的
public abstract class BankTemplateMethod {
public void takeNumber() {
System.out.print("排队区号!");
}
//钩子方法,子类去实现
public abstract void transact();
public void evaluate() {
System.out.print("反馈评分!");
}
public final void process() {
this.takeNumber();
this.transact();
this.evaluate();
}
}
然后在客户端使用是这样的
public class Client {
public static void main(String[] args) {
BankTemplateMethod lBankTemplateMethod = new DrawMoney();
lBankTemplateMethod.process();
}
static class DrawMoney extends BankTemplateMethod {
@Override
public void transact() {
System.out.print("我要取款!!");
}
}
}
可以看到模板方法使用起来简单易懂,符合生活实际,如果在项目中用到的话会大大提高代码质量。