[TOC]
模板模式
定义一个操作中的算法框架,将一些步骤延迟到子类中,使子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。
子类重写或实现父类的方法。再由父类的模板方法调用这些公共的方法。所以被子类重写或者不必暴露的方法一般定义为私有的。
优点
- 封装不变不封,扩展可变部分。
- 提取公共部分代码,便于维护。
- 行为由父类控制,子类实现。
使用场景
- 多个子类有公共的方法,并且逻辑基本相同。
- 重要、复杂的算法,可以把核心算法设计为模板方法,相关细节由子类实现。
- 重构时候,经相同代码提取到父类,再通过钩子函数约束其行为。
代码
定义抽象模板类
1 | public abstract class AbstractTemplate { |
定义子类实现
1 | public class ConcreteTemplate1 extends AbstractTemplate { |
测试类
1 | public static void main(String[] args){ |
1 | 模板1业务逻辑方法1 |