Template Method 模板方法模式

2021-05-09 19:13:29 字數 1004 閱讀 9964

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()

- method1()與method2()方法為受保護的抽象方法(protected abstract)。實現子類concreteclass需要過載該方法。

template method模式的應用場景

template method模式一般應用在具有以下條件的應用中:

- 具有統一的操作步驟或操作過程

- 具有不同的操作細節

- 存在多個具有同樣操作步驟的應用場景,但某些具體的操作細節卻各不相同

Template Method 模板模式

模式定義 定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中,從而使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。使用方法 各子類中公共的方法提煉出來,集中到父類中定義。而不同的子類所特有的方法,可以通過繼承父類的方法在內部自定義。使用範圍 多個子類存在共通的方法,個別的方法...

設計模式 template method

1 定義乙個操作中演算法的骨架,將一些步驟推遲到子類中實現。可以不改變演算法的結構而重定義該演算法的步驟 2 要完成在某乙個細節層次一致的乙個過程或一系列步驟,但其個別步驟在更詳細的層次上的實現可能不同。3 允許定義可變的子步驟,同時保持基本過程不致 4 由乙個抽象類組成,這個抽象類定義了需要覆蓋的...

模板模式 Template Method

定義 模板方法模式準備乙個抽象類,將部分邏輯以具體方法以及具體構造子的形式實現,然後宣告一些抽象方法來迫使子類實現剩餘的邏輯。不同的子類可以以不同的方式實現這些抽象方法,從而對剩餘的邏輯有不同的實現。先制定乙個頂級邏輯框架,而將邏輯的細節留給具體的子類去實現。開閉原則是指乙個軟體實體應該對擴充套件開...