# Why
如果某个方法的实现需要多个步骤,其中有些步骤是固定的,有些步骤不固定,存在可变性。可用模板方法模式进行设计,实现代码复用,保证系统灵活性。
模板方法模式(Template Method Pattern):定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法使子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。
# What
# UML
# 模板方法
指定义在抽象类中、把基本操作方法组合在一起形成一个总算法或一个总行为的方法。
# 基本方法
是实现算法各个步骤的方法,是模板方法的组成部分。分为三种:
# 抽象方法
# 具体方法
# 钩子方法
可以控制方法的执行,对一个算法进行约束
# 适用场景
- 对一些复杂的算法进行切割,将其算法中固定不变的部分设计为模板方法和父类具体方法,而将可以改变的细节由其子类实现
- 各子类中公共的行为应该被提取出来并集中到公共父类中避免代码重复
- 需要通过子类来决定父类算法中某个步骤是否执行,实现子类对父类的反向控制