Template Method(模板方法)
1. 模式的定义
Template Method(模板方法)是一种行为型设计模式。
它的核心思想是:在抽象类中定义算法骨架,将部分步骤延迟到子类实现,使子类在不改变流程结构的情况下定制具体行为。
模板方法强调“流程固定、步骤可变”:
主流程顺序由模板方法控制 可变步骤交由子类实现 公共步骤在父类复用
1.1 核心角色
AbstractClass(抽象模板):定义模板方法与抽象步骤 ConcreteClass(具体实现):实现差异化步骤 Hook(钩子方法,可选):子类可选择覆盖的可选扩展点
2. 模式的应用场景
当多个业务流程“骨架相同、细节不同”时,模板方法模式非常实用。
2.1 典型场景
医疗:不同检验项目的数据导入流程(解析→校验→转换→入库) 服装零售:不同渠道订单同步流程(拉取→映射→校验→入库) 仓储:不同承运商运单处理流程(验签→解析→状态更新→通知) 金融:不同通道对账流程(取数→对齐→差异处理→报表) 教育:不同考试数据清洗流程(读取→去重→评分→发布)
2.2 适用信号
多个流程存在重复代码与相同步骤顺序 只想开放部分步骤给扩展方 需要强约束流程主干不被破坏
3. 模式的优缺点
3.1 优点
复用高:公共流程沉淀在父类 一致性强:统一算法骨架避免流程跑偏 扩展清晰:子类只关注差异步骤
3.2 缺点
继承耦合:子类受父类流程约束 层级过深风险:扩展过多可能导致继承链复杂 运行时切换不灵活:与策略模式相比灵活性较弱
3.3 使用边界
若流程骨架并不稳定,模板方法不合适。
当流程骨架稳定且步骤差异明确时,模板方法模式收益较高。
4. 结合具体业务分析
下面用“医疗检验数据导入”场景说明。
4.1 业务背景
LIS 对接多个厂商,数据格式不同,但导入主流程一致:
拉取原始数据 校验完整性 转换标准结构 入库并通知
4.2 业务流程拆解
抽象模板定义稳定导入骨架 各厂商子类实现差异化步骤 主流程调用统一 Execute新增厂商仅新增子类实现
4.3 该业务中体现的模式价值
避免各厂商流程实现散乱和重复 保证导入关键步骤不遗漏 扩展新厂商成本低且风险可控
5. 小结
模板方法模式的本质是:
固定流程骨架,把可变步骤延迟到子类实现。
当你的系统存在“流程同构、步骤异构”的问题时,模板方法模式非常高效。
夜雨聆风