模板方法模式:优雅封装不变,灵活扩展可变
引言:代码复用与扩展的艺术
在日常开发中,我们常遇到核心流程固定但某些步骤需差异化的场景。例如:
- 数据库操作的通用流程(连接→执行→关闭)
- HTTP请求的固定步骤(构建请求→发送→解析响应)
- 报表生成的骨架(数据获取→格式转换→输出)
模板方法模式正是为解决这类问题而生。它通过定义算法的骨架,将可变步骤延迟到子类实现,完美平衡了复用性与扩展性。本文将深入剖析该模式的原理、实现及实战应用。
一、模式定义与核心思想
1.1 官方定义
模板方法模式 (Template Method Pattern):
定义一个操作中的算法骨架,而将某些步骤延迟到子类中实现。该模式使得子类可以不改变算法结构的情况下重定义该算法的某些特定步骤。
1.2 设计哲学
核心原则:
- 好莱坞原则:“Don’t call us, we’ll call you”
子类不主动调用父类,而是由父类在适当时机调用子类 - 封装不变:固化通用流程,避免重复代码
- 开放可变:通过继承实现差异化扩展