Template Method 模板模式

2021-05-08 02:06:13 字數 1132 閱讀 7171

模式定義

定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中,從而使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。 

使用方法

各子類中公共的方法提煉出來,集中到父類中定義。而不同的子類所特有的方法,可以通過繼承父類的方法在內部自定義。

使用範圍

* 多個子類存在共通的方法,個別的方法存在區別。

舉例說明

假設蓋乙個房子,需要如下三種通用的步驟,design,build和decorate。那麼可以在父類中定義這三個步驟並交由make()方法統一呼叫。

public abstract class housetemplate 

protected void design();

protected void build();

protected void decorate();

public void make()

}

假設蓋大房子bighouse的時候,需要特殊的build和decorate方法。

public class bighouse extends housetemplate

protected void decorate()

}

而蓋小房子smallhouse的時候,只有decorate比較特殊。 

public class bighouse extends housetemplate

protected void decorate()

}

通過如上的父類和子類的構建,模板方法模式也就誕生了。接下來看客戶類的呼叫。

public class houseclient 

}

觀察返回結果,便可知template method的原理。

design

build big house

decorate big house

design

build

decorate small house

設計模式 template method

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

模板模式 Template Method

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

模板方法TemplateMethod

list 模板方法有抽象模板和具體模板方法組成。抽象模板定義了乙個或者多個抽象操作,以便讓子類實現,為基本操作。具體模板實現了父類定義的乙個或者多個抽象方法,每個抽象模板角色都有其具體模板角色與之對應。換言之,模板方法在抽象類裡面定義了乙個骨架流程,a,b,c,然後在具體模板方法 子類 裡面實現a,...