設計模式C 實現 一 模板方法模式

2022-05-30 03:33:09 字數 1850 閱讀 1221

模板方法模式——在乙個方法中定義乙個演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變演算法結構的情況下,重寫定義演算法中的某些步驟。

假如我們有兩種咖啡因飲料:茶和咖啡。茶的製作過程為:

(1)燒水

(2)用沸水浸泡茶葉

(3)把茶倒進杯子

(4)加檸檬

而咖啡的製作過程為:

(1)燒水  

(2)用沸水沖泡咖啡

(3)把咖啡倒進杯子

(4)加糖和牛奶

我們發現兩種飲料的製作有類似的過程:

(1)燒水

(2)用沸水泡咖啡或茶

(3)把飲料倒進杯子

(4)在飲料中加入適當調料

將(1)(3)在乙個抽象基類——咖啡因飲料中定義和實現,而(2)(4)在基類中定義為抽象方法,交由具體的飲料子類去實現,並且基類提供乙個方法按一定順序呼叫這四個方法以完成飲料的製作。

抽象基類——咖啡因飲料

public

abstract

class

caffeinebeverage

}protected

abstract

void

brew();

protected

abstract

void

addcondiments();

void

boilwater()

void

pourincup()

protected

virtual

bool customerwantscondiments()//

鉤子 }

caffeinebeverage

class

tea : caffeinebeverage

protected

override

void

addcondiments()

}

tea咖啡

class

coffee : caffeinebeverage

protected

override

void

addcondiments()

}

coffee

還可以在基類中定義鉤子方法,該方法通過空的或者預設的實現,子類可有以選擇性的覆蓋該方法。鉤子方法可以用於影響抽象基類的演算法流程。

帶有鉤子的咖啡:鉤子用於控制是否加入調料

設計模式 模板方法模式C 實現

定義乙個操作的演算法的框架,而將一些步驟延遲到子類中。使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。實現方案 將演算法 邏輯框架放在抽象基類中,並定義好實現介面,在子類中實現細節介面。注 策略模式,解決的是相同的問題,只是其方案是將各個介面封裝為類,通過委託 組合方式解決問題 ...

C 實現 設計模式 4 模板方法模式

參考書籍 公司接到乙個xx模型公司的的訂單 需要生產10萬悍馬的車模 只做基本的實現 不靠慮擴充套件性 那麼就開始埋頭幹 先按照最一般的經驗設計類圖 如圖所示 非常簡單的實現 悍馬車有兩個型號 h1和h2 按照需求 只需要悍馬模型 那就給你悍馬模型 先寫乙個抽象類 然後兩個不同型號的模型實現類 通過...

設計模式之模板方法模式 C 實現

更多設計模式參看 設計模式之模式概述 模式彙總 c 實現 模式結構 示例 模板方法模式 template method pattern 定義乙個操作中演算法的框架,而將一些步驟延遲到子類中。模板方法模式使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。解決復用和擴充套件兩個問題 模...