模板方法模式:算法
(就是在抽象基類中定一個複用的方法!)spa
在一個方法中定一個算法的骨架,而將一些步驟延遲到子類中。code
模板方法使得子類能夠再不改變算法結構的狀況下,從新定義算法中的某些步驟。blog
實例:it
泡茶的步驟分別:io
一、把水煮開模板
二、用開水沖泡茶葉class
三、把茶倒進杯子裏原理
四、加檸檬方法
泡咖啡的步驟爲:
一、把水煮開
二、用開水沖泡咖啡
三、把咖啡倒進杯子裏
四、加糖
泡茶和泡咖啡的流程基本類似,因此能夠放在一塊兒,用下面的這個過程實現。
一、把水煮開
二、用開水沖泡
三、倒進杯子裏
四、加調料
把這麼這一個步驟封裝成一個方法,這個方法就是模板方法。
void blunkDrinks() { // 依次是每一個步驟 boilWater(); brew(); pourIncup(); addConditions(); }
void boilWater()
{
// 具體實現
}
void addCondition()
{
// 具體實現
}
abstract void brew(); // 抽象方法,在對應的茶或咖啡類中具體實現
abstract void addConditions(); // 抽象方法,在對應的茶或咖啡類中具體實現
原理:
一、抽象出一個抽象類,在這個類裏面實現一個模板方法
二、模板方法裏面包含一系列步驟(一系列方法),共用方法在抽象類中實現,特殊方法在子類中實現
應用實例:
JAVA Swing