###模式定義:算法
定義一個操做中算法骨架,而將一些步驟延遲到子類中。模板方法使得子類能夠不改變一個算法的結構便可重定義該算法的某些特定步驟。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
###開發中的應用場景:擴展
須要固定定義算法骨架,實現一個算法的不變部分,並把可變的行爲留給子類來實現的狀況。方法
各個子類中具備公共行爲,應該抽取出來,集中在一個公共類中去實現,從而避免代碼的重複。
須要控制子類擴展的狀況。模版方法模式會在特定的點來調用子類的方法,這樣只容許在這些點進行擴展。