1. 程式人生 > >Template Method - 模板方法模式

Template Method - 模板方法模式

本文介紹設計模式中的模板方法(Template Method)模式的概念,用法,以及實際應用中怎麼樣使用Template Method模式進行開發。

Template Method模式的概念 Template Method模式正如其名,在作為抽象類的父類裡,定義了一個具有固定演算法並可以細分為多個步驟的模板方法(public),Template Method模式把這些可以被細分的可變步驟抽象為可以被子類過載的抽象方法(protected abstract),並通過在子類中的過載(重新定義),做到無需改變模板方法的演算法步驟而可以重新定義該演算法中的某些特定的步驟。
如圖[該圖出自維基百科wikipedia.org]:



我們結合上面的定義解釋一下該圖。
- AbstractClass便相當於上述作為抽象類的父類,ConcreteClass便是具體的實現子類。具體的應用中,可能存在一到多個實現子類。
- AbstractClass定義了一個public的templateMethod()模板方法以及作為步驟的method1()與method2()方法。
- AbstractClass#templateMethod()方法體呼叫method1()與method2()方法
    public void templateMethod() {
        ...
        this.method()1;
        ...
        this.method()2;
        ...
    }
- method1()與method2()方法為受保護的抽象方法(protected abstract)。實現子類ConcreteClass需要過載該方法。

Template Method模式的應用場景 Template Method模式一般應用在具有以下條件的應用中:
- 具有統一的操作步驟或操作過程
- 具有不同的操作細節
- 存在多個具有同樣操作步驟的應用場景,但某些具體的操作細節卻各不相同