13 模版方法设计模式(Template Method Design Pattern)
模板方法模式是一种行为设计模式。在父类中定义了一个算法的框架,允许子类在不修改结构的情况下重写算法的某些特定步骤。
父类定义算法流程,子类实现差异化步骤
使用场景
- 当只希望客户端扩展某个特定算法步骤,而不是整个算法或其结构时,可使用模板方法模式;
- 当多个类的算法除一些细微不同之外几乎完全一样时,可使用该模式。但其后果就是,只要算法发生变化,就可能需要修改所有的类。
1. 应用
- JDBCTemplate:JdbcTemplate 是一个非常常见的类,用于简化 JDBC 操作。它通过模板方法设计模式,将数据库操作的通用部分(如连接管理、异常处理等)封装在基类中,而将具体的 SQL 执行逻辑留给子类或回调函数实现
- RestTemplate:RestTemplate是 Spring 框架中用于简化 RESTful API 调用的类。它通过模板方法设计模式,将 HTTP 请求的通用逻辑封装在基类中,而将具体的业务逻辑留给子类或回调函数实现。
- JMSTemplate & RedisTemplate etc.
1.1 优点
- 将相同部分提取到父类中,简化逻辑;
- 开发者在扩展功能时,只关注具体实现即可,减少心智负担。
1.2 缺点
- 父类中的某些算法模版可能会限制部分子类的实现方式。
2. 实现分析
举个例子:系统中的配置文件可能是 json,yaml,properties,env 等等。它们的核心逻辑都是读取文件然后转换成 Java 中的配置对象。这其中的检查文件是否存在,内容读取,配置字段检查等是通用的模版方法。不同点(可变部分)只是在读取文件时因为后缀不同也选择不同的库读取文件。