
【計】 prototype pattern
模闆模式是一種行為型設計模式,通過定義算法的骨架結構(即“模闆”),允許子類在不改變算法整體流程的情況下重寫特定步驟。核心思想是封裝不變部分,擴展可變部分,常用于框架開發或标準化流程設計。
Template Method Pattern is a behavioral design pattern that defines the program skeleton of an algorithm in an operation, deferring some steps to subclasses. It lets subclasses redefine certain steps without changing the algorithm's structure .
step2
和 step4
)。JdbcTemplate
,固定數據庫連接/釋放流程,用戶隻需實現 SQL 邏輯。注:以上引用來源均為計算機科學領域權威資料,鍊接經校驗有效(截至 2025 年)。
模闆模式(Template Method Pattern)是一種行為型設計模式,屬于GoF設計模式分類中的一種。其核心思想是定義一個算法框架的骨架,将某些步驟的具體實現延遲到子類中,從而在不改變算法整體結構的情況下允許子類重寫特定步驟。
算法骨架固定
父類(抽象類)定義一個模闆方法,該方法規定了算法的執行順序和步驟。這些步驟可以是抽象方法或具體實現。子類繼承父類後,隻能按照固定流程執行,但可重寫某些步驟的具體内容。
可變步驟的延遲實現
将算法中可能變化的步驟聲明為抽象方法,由子類負責實現。例如,一個制作飲料的流程中,“沖泡”和“添加調料”可能因飲品不同而變化,這兩個步驟可定義為子類需實現的方法。
鈎子方法(Hook Methods)
父類提供默認實現的可選步驟方法,子類可選擇是否覆蓋。這為流程提供了靈活性,例如某些步驟是否需要執行。
抽象類(Abstract Class)
定義模闆方法和抽象步驟。例如:
abstract class AbstractClass {
// 模闆方法(final防止子類修改流程)
public final void templateMethod() {
step1();
step2();
if (hook()) {
step3();
}
}
abstract void step1();
abstract void step2();
// 鈎子方法(默認實現)
boolean hook() { return true; }
}
具體子類(Concrete Class)
實現父類中的抽象步驟,例如:
class ConcreteClass extends AbstractClass {
void step1() { System.out.println("步驟1實現"); }
void step2() { System.out.println("步驟2實現"); }
// 可選覆蓋鈎子方法
boolean hook() { return false; }
}
以制作咖啡和茶為例:
煮水 → 沖泡 → 加調料 → 倒入杯子
。模闆模式通過固定流程與可變步驟的分離,平衡了代碼複用和擴展性,廣泛應用于框架和工具庫中。
丙基碘産後麻痹單鋒螺紋刀具單人遊戲多地址多毛真菌酸更換控制台公務性質桄榔過程調用請求航空廣播電台後置詞加堿熔化甲基異石榴皮鹼寄生性須瘡可用資金空氣機虧損結轉條例零間隙腦橋曲年度津貼撇皮膠乳匹米諾定普通貨運貨櫃箱契據登記軟腭縫術雙重面紗豎式爐探月太空船脫水山梨糖醇羧酸酯