定义
- 定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现;
- 模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤;
适用场景
- 一次性实现一个算法的不变部分,并将可变的行为留给子类实现;
- 各子类中公共的行为被提取出来并集中到一个公共父类中,从而避免代码重复;
优点
- 提高复用性;
- 提高扩展性;
- 符合开闭原则;
缺点
- 类数目增加;
- 增加了系统实现的复杂度;
- 继承关系自身的缺点,如果父类添加新的抽象方法,所有子类都要改一遍;
扩展
- 钩子方法;
相关设计模式
- 模板方法模式 & 工厂方法模式(工厂方法是模板方法的一种特殊实现);
- 模板方法模式(不改变算法流程的) & 策略模式(可以改变算法的流程);