定義: 定義一個操作中演算法的框架,而將一些步驟延遲到子類中。模板方法模式使得子類可以不改變一個演算法的結構即可重定義該演算法的某些特定步驟。 UML類圖: 具體代碼: 模塊說明: AbstractClass:抽象類,定義整個流程演算法的骨架。ConcreteClass:具體類,實現流程演算法里的具體步驟。 ...
定義:
定義一個操作中演算法的框架,而將一些步驟延遲到子類中。模板方法模式使得子類可以不改變一個演算法的結構即可重定義該演算法的某些特定步驟。
UML類圖:
具體代碼:
public class Client { public static void main(String[] args) { ConcreteClass cc = new ConcreteClass(); cc.init(); } } public abstract class AbstractClass { public abstract void operation1(); public abstract void operation2(); public void templateMeathod() { System.out.println("公共模板"); } public void init() { operation1(); templateMeathod(); operation2(); } } public class ConcreteClass extends AbstractClass { @Override public void operation1() { System.out.println("個性操作1"); } @Override public void operation2() { System.out.println("個性操作2"); } } 個性操作1 公共模板 個性操作2
模塊說明:
AbstractClass:抽象類,定義整個流程演算法的骨架。
ConcreteClass:具體類,實現流程演算法里的具體步驟。
適用場景:
定製流程的比如,框架的初始化,對賬等等。其中我們的項目對賬里就是這樣的,
對賬先下載文件,校驗文件,解析文件,錄入拆分,比對數據等等,類似的就很適合應用模板方法模式。
優缺點:
優點:
實現了代碼的復用。
缺點:
抽象類定義的模板與子類耦合度很高,不容易實現擴展。如果流程有變化,可能影響整個所有子類的調整。
總結:
代碼復用,且固定演算法流程。