###模式定义:算法
定义一个操做中算法骨架,而将一些步骤延迟到子类中。模板方法使得子类能够不改变一个算法的结构便可重定义该算法的某些特定步骤。ide
###模式结构 lua
###代码实现code
public abstract class BankTemplateMethod { public void takeNumber(){ System.out.println("取号"); } public abstract void transact();//具体业务 public void evaluate(){ System.out.println("反馈评价"); } public final void process(){ takeNumber(); transact(); evaluate(); } } public class Drawback extends BankTemplateMethod { @Override public void transact() { System.out.println("取钱"); } } public class Client { public static void main(String[] args) { Drawback drawback = new Drawback(); drawback.process(); System.out.println("-----------"); BankTemplateMethod saveBack = new BankTemplateMethod() { @Override public void transact() { System.out.println("存钱"); } }; saveBack.process(); } }
###模式的优缺点 ####模式的优势blog
####模式的缺点 2. 算法骨架不容易升级。开发
###思考模板
模式本质:固定算法骨架。class
###开发中的应用场景:扩展
须要固定定义算法骨架,实现一个算法的不变部分,并把可变的行为留给子类来实现的状况。方法
各个子类中具备公共行为,应该抽取出来,集中在一个公共类中去实现,从而避免代码的重复。
须要控制子类扩展的状况。模版方法模式会在特定的点来调用子类的方法,这样只容许在这些点进行扩展。