Template Method - 模板方法模式

來源:互聯網
上載者:User

 Template Method模式也叫模板方法模式,是由GoF提出的23種設計模式中的一種。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模式一般應用在具有以下條件的應用中:
- 具有統一的操作步驟或操作過程
- 具有不同的操作細節
- 存在多個具有同樣操作步驟的應用情境,但某些具體的操作細節卻各不相同

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.