[設計模式] 行爲型:模版方法模式(Template Method Pattern)

什麼是模版方法模式

現實生活中,模版到處都是,比如,小學生優秀作文模版,購房合同模版,還有生產各種甜品蛋糕的模具。

模版就是一套約定好的規則,套用模版就可以生產出符合規則的具體事物。

具體到編程領域的設計模式,模版就是抽象類的抽象方法。

因爲抽象方法只有聲明,沒有實現,非常適合規則的描述,所以前人就利用抽象類的特性,摸索出了模版方法模式。

設計與實現

模版方法模式是一種非常容易掌握的模式,重點就是抽象類的抽象方法,用抽象方法描述規則邏輯,用抽象類的子類將規則具體化。

好了,不需要講那麼多,看看標準的模版代碼就都能懂:

// 抽象類的模版方法
public abstract class Template {
    // 模版方法
    public void templateMethod() {
        System.out.println("...前置邏輯...");
        specific();
        System.out.println("...後置邏輯...");
    }

    // 需要子類實現的方法(規則)
    protected abstract void specific();
}

// 子類將規則具體化
public class Concrete extends Template {
    @Override
    protected void specific() {
        System.out.println("子類實現具體規則邏輯");
    }
}

// 模式應用場景
public static void main(String[] args) {
    Template template = new Concrete();
    template.templateMethod();
}

抽象方法specific()protected修飾並非必須的,只是通常這樣做會更好一些。

因爲,在模版方法模式中,抽象方法是拿給子類實現的,一般不會暴露給外界調用,外界關注的是模版方法templateMethod(),而它又在抽象類中早就定義好了,不需要子類再去重寫。

因此,無論有多少具體的子類,抽象模版的運行邏輯都是同一套,是固定不變的,子類無需關心,這也就是模版方法模式的精髓之處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章