模板模式

基本介绍

1)模板方法模式,又叫模板模式,在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需重写方法实现,但调用将以抽象类中定义的方式进行

2)简单说,模板方法模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结果,就可以重新定义该算法的某些特定步骤

3)这种类型的设计模式数据行为型模式

模板方法模式的钩子方法

1)在模板方法模式的父类中,我们可以定义一个方法,它默认不做任何事,子类可以视情况要不要覆盖它,该方法称为“钩子”

模板方法模式的注意事项和细节

1)基本思想是:算法只存在于一个地方,也就是在父类中,容易修改。需要修改算法时,只要修改父类的模板方法或者已经实现的某些步骤,子类就会集成这些修改

2)实现了最大化代码复用。父类的模板方法和已实现的某些步骤会被子类继承而直接使用

3)既统一了算法,也提供了很大的灵活性。父类的模板方法确保了算法的结构保持不变,同事由于子类提供部分步骤的实现

4)该模式的不足之处:每一个不同的实现都需要一个子类实现,导致类的个数增加,使得系统更加庞大

5)一般模板方法都加上final关键字,防止子类重写模板方法

6)模板方法模式使用场景:当要完成在某个过程,该过程要执行一系列步骤这一系列的步骤基本相同,但其个别步骤在实现时可能不同,通常考虑用模板法法模式来处理

类图

案例代码

package com.example.demo.design.template;public abstract class BankTemplateMethod {abstract void transact();public void process(){takeNumber();transact();evaluate();}public void evaluate(){System.out.println("交易评价~");}public void takeNumber(){System.out.println("拿号,排队");}
}
package com.example.demo.design.template;public class Deposit extends BankTemplateMethod{@Overridevoid transact() {System.out.println("押金业务");}
}
package com.example.demo.design.template;public class Transfer extends BankTemplateMethod{@Overridevoid transact() {System.out.println("转账业务");}
}
package com.example.demo.design.template;public class Withdraw extends BankTemplateMethod{@Overridevoid transact() {System.out.println("回收业务");}
}
package com.example.demo.design.template;public class Client {public static void main(String[] args) {BankTemplateMethod b1 = new Deposit();b1.process();System.out.println("------");BankTemplateMethod b2 = new Withdraw();b2.process();System.out.println("------");BankTemplateMethod b3 = new Transfer();b3.process();}
}

结果

模板方法模式在的应用

IOC AbstractApplicationContext中的onRefresh()方法

设计模式--模板模式相关推荐

  1. 12. 星际争霸之php设计模式--模板模式

    题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...

  2. Java设计模式-模板模式

    Java设计模式-模板模式 什么是模板模式? 模板模式,顾名思义,就是通过模板拓印的方式. 定义模板,就是定义框架.结构.原型.定义一个我们共同遵守的约定. 定义模板,我们的剩余工作就是对其进行充实. ...

  3. Java设计模式—模板模式(Template)

    模板模式 业务需求 编写豆浆制作程序 选材-添加配料-浸泡-豆浆机打碎 选材.浸泡.打碎这几步对于制作不同豆浆都是一样的 比较简单,这里不再使用传统方法,直接上设计模式 模板模式基本介绍 模板模式,在 ...

  4. 【设计模式】Java设计模式 - 模板模式

    [设计模式]Java设计模式 - 模板模式

  5. C语言实现设计模式—模板模式

    文章目录 C语言实现设计模式-模板模式 模板模式介绍 UML用例说明 实际场景使用 框架结构[共用框架]-通用的串口协议分析函数 不同实现-数据类型区别 C语言实现设计模式-模板模式 模板模式介绍 在 ...

  6. 16、Python与设计模式--模板模式

    一.股票查询客户端 投资股票是种常见的理财方式,我国股民越来越多,实时查询股票的需求也越来越大.今天,我们通过一个简单的股票查询客户端来认识一种简单的设计模式:模板模式. 根据股票代码来查询股价分为如 ...

  7. PHP设计模式——模板模式

    声明:本系列博客参考资料<大话设计模式>,作者程杰. 模板模式准备一个抽象类,将部分逻辑以具体方法以及具体构造形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑.不同的子类可以以不同的 ...

  8. 设计模式 模板模式和策略模式

    模板模式和策略模式,有相识的地方,都是通过对钩子方法的调用,来实现一个业务的完整逻辑. 所以这里我将两种模式放在一起介绍,比较容易加深对这两种模式的理解. 模板模式 在模板模式(Template Pa ...

  9. java设计模式————模板模式,手撸一个JDBCTemplate

    模板模式(Template Method Pattern) 定义一个算法的骨架,并允许子类为一个或者多个步骤提供实现. 模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤. 属于行为 ...

  10. 一文搞懂设计模式--模板模式

    Hi,大家好.今年的天气实在是太热了,七月份的厦门晒得我觉得身上冒出了烤肉香,不知道各位是否安好,但是在再热的天气也不能阻止我们学习的热情(doge).今天的主题是模板(Template Method ...

最新文章

  1. 16、Kubernetes搭建高可用集群
  2. python怎么输入代码-教你如何将自己的脚本代码放到服务器上运行
  3. 使用ASP.NET 2.0提供的WebResource管理资源
  4. python数据分析知识点_Python基础知识点总结:数据
  5. Linux中默认的JDK版本设置
  6. java第三阶段源代码_有效Java第三版的源代码已更新为使用较新的功能
  7. 深入分析MFC文档视图结构(项目实践)
  8. 【Http】HTTPclient保持长连接需要消费返回信息 不然很卡
  9. 怎么查看页面跳转过程_fastcapture注册码怎么获取?FastStone注册码分享
  10. FFmpeg的H.264解码器源代码简单分析:环路滤波(Loop Filter)部分
  11. mysql中innodb的工作原理_解读MySQL的InnoDB引擎日志工作原理
  12. Vue小案例 之 商品管理------添加商品
  13. 学习笔记-数据结构与算法之二叉树
  14. pandas_day08
  15. 报错解决:symbol lookup error-----undefined symbol: JLI_StringDup
  16. javaScript---异步那些事(promise)(21/11/8)
  17. 学习云计算与大数据就业前景好吗?
  18. “东数西算”开启数据中心的新一轮“圈地运动”
  19. 西门子博途软件TIA PORTAL不同版本安装在一台电脑上的个人总结
  20. 地面三维激光扫描仪在火灾现场调查取证中的应用

热门文章

  1. 许可证+实名制:政策铁拳打到网红更痛在平台
  2. mybatis的一级缓存、二级缓存、sqlsession、sqlsessionfactory什么意思?
  3. mysql设置主键自动增长
  4. android调整图片的色相,饱和度,灰度
  5. python 之 matplotlib
  6. 芒果iOS开发人事面试问题及答案汇总二
  7. 景驰诉景驰?创始人内讧升级 争夺企业名称权
  8. mysql维护计划任务_MySQL 计划任务
  9. 蓝桥杯625特殊数C语言
  10. 数字信号处理——观察信号的频谱