設計模式之十二模板模式

2022-07-11 14:00:16 字數 3177 閱讀 7525

模式介紹

1) 模板方法模式(template method pattern),又叫模板模式(template pattern),z 在乙個抽象類公開定義了執行它的方法的模板。它的子類可以按需要重寫方法 實現,但呼叫將以抽象類中定義的方式進行。

2) 簡單說,模板方法模式 定義乙個操作中的演算法的骨架,而將一些步驟延遲到子 類中,使得子類可以不改變乙個演算法的結構,就可以重定義該演算法的某些特定 步驟

3) 這種型別的設計模式屬於行為型模式。

uml類圖

案例:編寫製作豆漿的程式,說明如下:

• 製作豆漿的流程 選材--->新增配料--->浸泡--->放到豆漿機打碎

• 通過新增不同的配料,可以製作出不同口味的豆漿

• 選材、浸泡和放到豆漿機打碎這幾個步驟對於製作每種口味的豆漿都是一樣的(紅 豆、花生豆漿。。。)

uml類圖

**實現:

package

com.hy.template;

/***

@author

hanyong

* @date 2020/11/27 22:58 */

//抽象類,表示豆漿

public

abstract

class

soyamilk

//選材料

void

select()

//新增不同的配料, 抽象方法, 子類具體實現

abstract

void

addcondiments();

//浸泡

void

soak()

void

beat()

}package

com.hy.template;

/***

@author

hanyong

* @date 2020/11/27 22:59 */

public

class redbeansoyamilk extends

soyamilk

}package

com.hy.template;

/***

@author

hanyong

* @date 2020/11/27 22:59 */

public

class peanutsoyamilk extends

soyamilk

}package

com.hy.template;

/***

@author

hanyong

* @date 2020/11/27 23:00 */

public

class

client

}

輸出結果

模板方法模式的鉤子方法

1) 在模板方法模式的父類中,我們可以定義乙個方法,它預設不做任何事,子類可以 視情況要不要覆蓋它,該方法稱為「鉤子」。

2) 還是用上面做豆漿的例子來講解,比如,我們還希望製作純豆漿,不新增任何的配 料,請使用鉤子方法對前面的模板方法進行改造

**演示

package

com.hy.template.improve;

/***

@author

hanyong

* @date 2020/11/27 22:58 */

//抽象類,表示豆漿

public

abstract

class

soyamilk

soak();

beat();

}//選材料

void

select()

//新增不同的配料, 抽象方法, 子類具體實現

abstract

void

addcondiments();

//浸泡

void

soak()

void

beat()

//鉤子方法,決定是否需要新增配料

boolean

customerwantcondiments()

}package

com.hy.template.improve;

/***

@author

hanyong

* @date 2020/11/27 22:59 */

public

class redbeansoyamilk extends

soyamilk

}package

com.hy.template.improve;

/***

@author

hanyong

* @date 2020/11/27 22:59 */

public

class peanutsoyamilk extends

soyamilk

}package

com.hy.template.improve;

/***

@author

hanyong

* @date 2020/11/27 23:03 */

public

class puresoyamilk extends

soyamilk

@override

boolean

customerwantcondiments()

}package

com.hy.template.improve;

/***

@author

hanyong

* @date 2020/11/27 23:00 */

public

class

client

}

執行結果

設計模式學習之十二 模板方法模式

製作豆漿的流程,選材 新增配料 浸泡 豆漿機中打碎 通過不同的配料。可以製作不同口味的豆漿 選材。浸泡,和打碎這幾個步驟對於製作每種口味的豆漿都是一樣的 通過模板方法模式完成 模板方法模式 template method pattern 又叫模板模式。在乙個抽象類公開定義執行它的方法的模板。它的子類...

C C 設計模式 十二 模板模式

模板模式 template method模式 是行為模式之一,它把具有特定步驟演算法中的某些必要的處理委讓給抽象方法,通過子類繼承對抽象方法的不同實現改變整個演算法的行為。template method模式一般應用在具有以下條件的應用中 1.具有統一的操作步驟或操作過程 2.具有不同的操作細節 3....

模板設計模式 設計模式之模板模式

模板模式,通常又叫做模板方法模式,乙個抽象類公開定義了執行方法的模板,它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方法進行,這種型別的設計模式屬於行為型模式。模板模式主要解決將通用的演算法抽象起來,同樣的 邏輯出現了重複,就可以使用模板模式進行重構。關鍵 在抽象類實現,其他步驟在子類實現...