设计模式之模板方法
1. 定义
定义了一个算法的框架,并允许子类重写其中的某些步骤,而不改变算法的结构
2. 口语化表述
模板方法其实在日常生活中已经很常见,所谓模板方法,就是事先约定好一些事情,后续做时再慢慢实现或者修改,比如组装电脑
假设现在需要组装一台台式电脑,一开始计划使用3090显卡,后来根据实际需要,选择了4090显卡,为啥可以替换呢,因为组装电脑前约定了要使用显卡,主板上的显卡插槽也是一样的,所以可以根据后来实际需要选择显卡,其他配件也类似
事先约定好,后续做时再慢慢实现或者修改,这就是模板方法模式
(下面的描述会沿用这个上述这个场景)
3. 源码示例
模板方法在Java中使用广泛,比如连接数据库的JDBC,数据库有很多种,并且还可能有新的出现
JDK在设计JDBC时,规定了核心编程对象,在处理具体数据库时,就会有具体的实现,大致示意图如下:
4. 总结
4.1 设计优点
-
单一职责原则
可将重复代码提取到一个超类中
-
开闭原则
无需对上下文进行修改就能够引入新的子类
4.2 适用场景
-
希望客户端扩展某个特定算法步骤,而不是整个算法或其结构时
-
多个类的算法除一些细微不同之外几乎完全一样时
将公共行为抽取为一个父类进行复用