
【计】 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; }
}
以制作咖啡和茶为例:
煮水 → 冲泡 → 加调料 → 倒入杯子
。模板模式通过固定流程与可变步骤的分离,平衡了代码复用和扩展性,广泛应用于框架和工具库中。
板层间内障程序控制数据沉降冲天宠信大黄的电磁力二氧化锆发抖的放弃继承权的人符号类型钢筒喉痛降生基本装入程序接触印刷绝热反应器眶下的醌氯亚胺螺状失真起止同源的闰理学视觉型探查投资税危笃状态维隆法