设计模式之模板方法

1. 定义

定义了一个算法的框架,并允许子类重写其中的某些步骤,而不改变算法的结构

2. 口语化表述

模板方法其实在日常生活中已经很常见,所谓模板方法,就是事先约定好一些事情,后续做时再慢慢实现或者修改,比如组装电脑

假设现在需要组装一台台式电脑,一开始计划使用3090显卡,后来根据实际需要,选择了4090显卡,为啥可以替换呢,因为组装电脑前约定了要使用显卡,主板上的显卡插槽也是一样的,所以可以根据后来实际需要选择显卡,其他配件也类似

事先约定好,后续做时再慢慢实现或者修改,这就是模板方法模式

下面的描述会沿用这个上述这个场景

3. 源码示例

模板方法在Java中使用广泛,比如连接数据库的JDBC,数据库有很多种,并且还可能有新的出现

JDK在设计JDBC时,规定了核心编程对象,在处理具体数据库时,就会有具体的实现,大致示意图如下:

img

4. 总结

4.1 设计优点

  • 单一职责原则

    可将重复代码提取到一个超类中

  • 开闭原则

    无需对上下文进行修改就能够引入新的子类

4.2 适用场景

  • 希望客户端扩展某个特定算法步骤,而不是整个算法或其结构时

  • 多个类的算法除一些细微不同之外几乎完全一样时

    将公共行为抽取为一个父类进行复用

5. 参考资料

[1] 模板方法设计模式 (refactoringguru.cn)

[2] 浅谈Spring JdbcTemplate模板方法设计模式 - 简书 (jianshu.com)

posted @ 2024-01-23 19:34  当时明月在曾照彩云归  阅读(6)  评论(0编辑  收藏  举报