模板方法模式

2021-08-17 05:43:33 字數 1943 閱讀 5940

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

- abstractclass : 抽象類,用來定義演算法骨架和原語操作,具體的子類通過重定義這些原語操作來實現乙個演算法的各個步驟。在這個類裡,還可以提供演算法中通用的實現。

- concreteclass:具體的實現類。用來實現演算法骨架中的某些步驟,完成與特定子類相關的功能!

固定演算法骨架

去銀行辦業務,如取錢,存錢或者辦卡等,基本都需要三個大的步驟(骨架),首先 (1)取號 (2)辦具體業務(3)服務評價打分,然後這三個步驟就可以抽取到父類中進行定義,(1)取號 (3)服務打分是相同操作,可以直接在父類總實現,然後(2)辦具體的業務各不相同需要在子類中實現。

bankbusinesstemplate

/**

*銀行辦業務模板

*@author lijun

*@since 2018-03-19 15:17

*/public

abstract

class

bankbusinesstemplate

/*** 辦業務

*/public

abstract

void

transactbusiness();

/*** 服務評價打分

*/private

void

evaluate()

/*** 業務處理

*/public

void

progress()

}

withdrawalbusiness

/**

* 取款業務

*@author lijun

*@since 2018-03-19 15:25

*/public

class

withdrawalbusiness

extends

bankbusinesstemplate

}

depositbusiness

/**

* 存款業務

*@author lijun

*@since 2018-03-19 15:28

*/public

class

depositbusiness

extends

bankbusinesstemplate

}

/**

* 辦卡業務

*@author lijun

*@since 2018-03-19 15:35

*/public

class

extends

bankbusinesstemplate

}

呼叫

@test

public

void

testwithdrawal()

輸出

取到60號,等待辦理業務

正在辦理取款業務取出300元.

非常滿意!

模板設計模式常在資料庫操作中使用。jdbc連線資料庫通常會有如下幾個步驟

1. 獲取連線

2. 建立語句集

3. 執行語句集,並且獲得結果集

4. 解析語句集

5. 關閉結果集

6. 關閉語句集

7. 關閉連線

原始碼位址

模板方法模式

有這樣乙個場景 乙個演算法或流程,它的步驟以及步驟之間的順序是固定的,但具體的某一步可能有不同的實現。對於這麼乙個場景,可以建立多個類,各個類實現不同的實現,但是這樣的缺點是 易錯 難改,易錯 應為步驟和順序是固定的,而且在每個類中都要寫一遍,程式設計師怎有心情不好的時候,就有可能把其中某一步給寫錯...

模板方法模式

模板方法模式 定義乙個演算法框架,將裡面的操作步驟推遲到子類中去執行,這樣使得子類不用改變框架,只需改變某些操作步驟方法 ifndef test h define test h include include using namespace std class test virtual test v...

模板方法模式

模板方法模式 在乙個方法中定義乙個演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變演算法結構的情況下,重新定義演算法的某些步驟。還可以使用鉤子對可選部分進行判斷。include include using namespace std class caffeinebeverage ...