模板方法模式
简介
模板方法模式(Template Method Pattern)可以在基类中定义一个算法的框架,允许子类在不修改框架结构的情况下重写算法的特定步骤。
角色组成:
- 抽象类(Abstract Class):声明作为算法步骤的方法,以及依次调用它们的实际模板方法。
- 具体类(Concret Class):可以重写所有步骤,但不能重写模板方法自身。
使用场景
- 框架扩展点设计
- 多步骤流程标准化
- 算法流程复用
- 生命周期控制
- 代码复用与规范约束
优点
- 提高代码复用性(公共流程在父类实现)
- 约束子类行为(强制实现关键步骤)
- 符合开闭原则(扩展子类而非修改父类)
- 提供清晰的扩展点(钩子方法)
缺点
- 子类数量可能过多(每个差异需一个子类)
- 父类定义流程,子类灵活性受限
- 继承强耦合(子类依赖父类实现细节)