设计模式--模板模式
模板模式
基本介绍
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()方法
设计模式--模板模式相关推荐
- 12. 星际争霸之php设计模式--模板模式
题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...
- Java设计模式-模板模式
Java设计模式-模板模式 什么是模板模式? 模板模式,顾名思义,就是通过模板拓印的方式. 定义模板,就是定义框架.结构.原型.定义一个我们共同遵守的约定. 定义模板,我们的剩余工作就是对其进行充实. ...
- Java设计模式—模板模式(Template)
模板模式 业务需求 编写豆浆制作程序 选材-添加配料-浸泡-豆浆机打碎 选材.浸泡.打碎这几步对于制作不同豆浆都是一样的 比较简单,这里不再使用传统方法,直接上设计模式 模板模式基本介绍 模板模式,在 ...
- 【设计模式】Java设计模式 - 模板模式
[设计模式]Java设计模式 - 模板模式
- C语言实现设计模式—模板模式
文章目录 C语言实现设计模式-模板模式 模板模式介绍 UML用例说明 实际场景使用 框架结构[共用框架]-通用的串口协议分析函数 不同实现-数据类型区别 C语言实现设计模式-模板模式 模板模式介绍 在 ...
- 16、Python与设计模式--模板模式
一.股票查询客户端 投资股票是种常见的理财方式,我国股民越来越多,实时查询股票的需求也越来越大.今天,我们通过一个简单的股票查询客户端来认识一种简单的设计模式:模板模式. 根据股票代码来查询股价分为如 ...
- PHP设计模式——模板模式
声明:本系列博客参考资料<大话设计模式>,作者程杰. 模板模式准备一个抽象类,将部分逻辑以具体方法以及具体构造形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑.不同的子类可以以不同的 ...
- 设计模式 模板模式和策略模式
模板模式和策略模式,有相识的地方,都是通过对钩子方法的调用,来实现一个业务的完整逻辑. 所以这里我将两种模式放在一起介绍,比较容易加深对这两种模式的理解. 模板模式 在模板模式(Template Pa ...
- java设计模式————模板模式,手撸一个JDBCTemplate
模板模式(Template Method Pattern) 定义一个算法的骨架,并允许子类为一个或者多个步骤提供实现. 模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤. 属于行为 ...
- 一文搞懂设计模式--模板模式
Hi,大家好.今年的天气实在是太热了,七月份的厦门晒得我觉得身上冒出了烤肉香,不知道各位是否安好,但是在再热的天气也不能阻止我们学习的热情(doge).今天的主题是模板(Template Method ...
最新文章
- 16、Kubernetes搭建高可用集群
- python怎么输入代码-教你如何将自己的脚本代码放到服务器上运行
- 使用ASP.NET 2.0提供的WebResource管理资源
- python数据分析知识点_Python基础知识点总结:数据
- Linux中默认的JDK版本设置
- java第三阶段源代码_有效Java第三版的源代码已更新为使用较新的功能
- 深入分析MFC文档视图结构(项目实践)
- 【Http】HTTPclient保持长连接需要消费返回信息 不然很卡
- 怎么查看页面跳转过程_fastcapture注册码怎么获取?FastStone注册码分享
- FFmpeg的H.264解码器源代码简单分析:环路滤波(Loop Filter)部分
- mysql中innodb的工作原理_解读MySQL的InnoDB引擎日志工作原理
- Vue小案例 之 商品管理------添加商品
- 学习笔记-数据结构与算法之二叉树
- pandas_day08
- 报错解决:symbol lookup error-----undefined symbol: JLI_StringDup
- javaScript---异步那些事(promise)(21/11/8)
- 学习云计算与大数据就业前景好吗?
- “东数西算”开启数据中心的新一轮“圈地运动”
- 西门子博途软件TIA PORTAL不同版本安装在一台电脑上的个人总结
- 地面三维激光扫描仪在火灾现场调查取证中的应用