例如,去銀行辦理業務一般經理一下4個流程:取號、排隊、辦理具體業務、對工作人員評分等,其中取號、排隊和評分的業務每個客戶是一樣的,可以在父類中實現,但是辦理具體業務卻因人而異,可以延遲到子類中實現。
定義乙個操作中的演算法骨架,而將演算法的一些步驟延遲到子類中,使得子類可以不改變該演算法結構的情況下重定義該演算法的某些特定步驟。
模板方法模式包含以下主要角色:
【例】炒菜
炒菜的步驟是固定的,分為倒油、熱油、倒蔬菜、倒調料、翻炒等步驟。現在通過模板方法模式來實現。
抽象類
package com.hupp.template;
/** * 抽象類(定義模板方法和基本方法)
*/public
abstract
class
abstractclass
//1.倒油
public
void
pouroil()
//2.熱油
public
void
heatoil()
//3.每次炒的菜可能不一樣,所有定義成抽象方法
public
abstract
void
pourvegetable()
;//4.炒不同的菜,倒不同的調料,讓子類去實現
public
abstract
void
poursauce()
;//5.翻炒
public
void
fry(
)}
具體子類
package com.hupp.template;
/** * 炒包菜類
*/public
class
concreteclass_baocai
extends
abstractclass
@override
public
void
poursauce()
}
package com.hupp.template;
/** * 炒菜心
*/public
class
concreteclass_caixin
extends
abstractclass
@override
public
void
poursauce()
}
客戶端類
package com.hupp.template;
public
class
client
}
執行結果![](https://pic.w3help.cc/327/f829fa8782d0ba9b76a46b977b843.jpeg)
模板設計模式 PHP設計模式之模板方法模式
模板方法模式,也是我們經常會在不經意間有會用到的模式之一。這個模式是對繼承的最好詮釋。當子類中有重複的動作時,將他們提取出來,放在父類中進行統一的處理,這就是模板方法模式的最簡單通俗的解釋。就像我們平時做專案,每次的專案流程實都差不多,都有調研 開發 測試 部署上線等流程。而具體到每個專案中,這些流...
設計模式之模板方法設計模式
父類抽象出子類共有的方法,子類實現各自不同的業務。總之就是一種行為有他們共同的方法,只是他們具體的實現不一樣。比如開車這種行為模式,啟動 換擋 踩油門。每種型號品牌的車都有共同的行為,但是不同型號品牌的車的實現方式可能不同,需要每個品牌型號的車自己實現這些功能。這樣的定義上面行為的模式,稱之為模板方...
設計模式之模板方法模式
定義 定義乙個操作中演算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變演算法的結構即可重定義該演算法中的某些特定步驟 型別 行為類模式 事實上,模板方法是程式設計中乙個經常用到的模式。比如,給定乙個整數陣列,把陣列中的數由大到小順序,然後把排序之後的結果列印出來。這個需求大體可以分為兩部分,...