# 模板方法模式(Template Method Pattern)
- 记忆关键字:模板方法
- 定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤
- 类型:行为型
- ![UML类图](./design-pattern.png)
## 1.涉及的角色
1)AbstractClass(抽象类)
是一个抽象模板,定义并实现了一个模板方法
2)ConcreteClass(具体实现类)
实现父类所定义的一个或多个抽象方法
## 2.使用场景
- java.util.AbstractList
- java.util.AbstractMap
- java.io.InputStream
- -AbstractApplicationContext 类中的 refresh() 方法是一个典型的模板方法模式的应用
## 3. 分析
- 模板方法模式是通过把不变行为搬移到超类,去除子类中的重复代码来体现它的优势
- 提供了一个很好的代码复用平台
- 通过抽象类定义算法的框架,并将其中一些步骤留给子类实现,从而实现了算法的复用和扩展。