Java中的模板方法模式
模板方法模式是一种行为模式,建议在超类中更一般地定义算法。 该算法是在称为模板方法的方法中定义的。 子类仅定义更具体的算法步骤的实现。
使用这种设计模式的好处是,算法后面的任何更改只会影响超类中的代码。 此外,它还可以提高代码的可重用性。
在本快速教程中,我们将学习在Java中实现模板方法模式。
模板方法模式:
假设我们必须写一篇文章。 通常涉及几个步骤:
- 专题研究
- 勾勒轮廓
- 写介绍
- 然后,准备论文的正文
- 最后,总结一下
因此,让我们继续创建EssayTemplate类:
public abstract class EssayTemplate {private String topic;public EssayTemplate(String topic) {this.topic = topic;}public final void writeEssay() {doResearch();makeOutline();writeIntro();writeBody();writeConclusion(); } void doResearch() { System.out.println("Researching"); }void makeOutline() { System.out.println("Making an outline"); }void writeIntro() { System.out.println("Introducing topic"); }void writeConclusion() { System.out.println("Concluding topic");}abstract writeBody();
}
无论论文的类型是短还是长,大部分的常规步骤(包括研究,创建大纲,撰写引言和结论)都将保持不变。 因此,这些方法定义存在于超类本身中。
另外,请注意, 我们已将模板方法标记为最终方法,以避免被任何子类覆盖。
使用模板类:
论文的主要内容或正文取决于论文的性质。 因此,我们将writeBody()方法定义留给子类提供。
现在,让我们创建EssayTemplate的两个子类-ShortEssay和LongEssay :
public class ShortEssay extends EssayTemplate {public ShortEssay(String topic) {super(topic);}@Overridepublic void writeBody() {System.out.println("Adding 2 paras");}
}public class LongEssay extends EssayTemplate {public LongEssay(String topic) {super(topic);}@Overridepublic void writeBody() {System.out.println("Adding 6 paras");}
}
UML图:
我们可以通过UML图将模板模式的上述示例实现表示为:
ShortEssay和LongEssay定义了writeBody()方法的实现。 但是,定义算法的方法以及其他常见方法的实现位于超类中。
使用模板模式的客户端代码:
让我们编写一些客户端代码来测试我们的实现:
//code in main method
EssayTemplate shortEssay = new ShortEssay("Programming - An Art");
shortEssay.writeEssay();
这样,我们将在控制台上获得以下输出:
Researching
Making an outline
Introducing topic
Adding 2 paras
Concluding topic
结论:
在本教程中,我们研究了模板方法模式。
java.io.InputStream和java.io.OutputStream的所有非抽象方法都使用模板模式 。
翻译自: https://www.javacodegeeks.com/2019/09/template-method-pattern-java.html
Java中的模板方法模式相关推荐
- java模板方法模式_Java中的模板方法模式
java模板方法模式 模板方法模式是一种行为模式,建议在超类中更一般地定义算法. 该算法是在称为模板方法的方法中定义的. 子类仅定义更具体的算法步骤的实现. 使用这种设计模式的好处是,算法后面的任何更 ...
- Java 设计模式之模板方法模式
一.了解模板方法模式 1.1 什么是模板方法模式 模板方法模式 Template Method Parrern)在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以在不改变 ...
- Java设计模式之模板方法模式(UML类图分析+代码详解)
大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...
- java 模板方法_设计模式(java实现)_模板方法模式(Template method)
设计模式(java实现)_模板方法模式(Template method) 模板方法模式是编程中经常用到到的模式.它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现.这样,新的子类可以在不改变一个 ...
- Java中的贷款模式(又名贷方承租人模式)
这篇文章是关于在Java中实现贷款模式的. 用例 在保存资源的代码与访问资源的代码之间实现分离,从而使访问代码无需管理资源. 当我们编写用于读取/写入文件或查询SQL / NOSQL数据库的代码时,上 ...
- java中的监听器模式
java中的监听器模式 监听器模式的角色 过程 EventObject EventListener 例子1 监听按钮的点击事件 事件源 event source: Button 事件对象 event ...
- 设计模式之行为模式中的模板方法模式(template method)
设计模式之行为模式中的模板方法模式(template method) 声明 一.行为模式 二.模板方法模式 三.实例 概况描述 代码 运行结果 优点 类似的模式 优秀文章 声明 本人写此文章只是为了梳 ...
- Java中的设计者模式
创建型模式 1.单例模式 概念:单例模式,是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中,应用该模式的类只有一个实例.即一个类只有一个对象实例. 实 ...
- java中23中设计模式详解
设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
最新文章
- VS Code为什么能这么牛?
- pthread_cond_broadcast相关
- 在Access和 SQL Server中通配符的应用方法
- 【IT笔试面试题整理】反转链表
- 我心目中的牛程序员、我们可以对比看看(人家还是看多年朋友面子上才肯帮忙1周,至少需支付1万元辛苦费)...
- android 刷新标题栏,Android 自定义标题栏的实例详解
- VirtualBox的vdi文件复制
- java 多线程基础(一)
- JAVA浅层复制深层复制理解-java_01_20160824
- tcp报文格式_腾讯面试中的TCP/IP协议简述+经典面试题
- 可以在python3下面用的pyh
- FR模板参数在SQL中或单元格过滤的写法
- 科工网大数据有力促进机器人制造业发展
- 数字化商业模式三结构:价值创造、价值交付、价值捕获
- 2022.7.20 JETSON NANO 2GB 跑Swin-Transformer-Object-Detection。(配置:UBUNTU18/PYTHON3.6/PYTORCH1.6.0...)
- C程序设计第五版谭浩强课后答案 第八章习题答案
- 用python画一个正方形
- matlab2016环境变量,matlab环境变量path
- Mac 系统下java端口占用
- 试验数据的筛选和质量可视化
热门文章
- P2055-假期的宿舍【网络流,最大流,最大匹配】
- 2017西安交大ACM小学期 文本查找[AC自动机]
- 动态规划训练25 [Food Delivery ZOJ - 3469 ]好题
- Dubbo(十)之配置加载流程
- Spring Bean 定义继承
- git创建tag标签
- C#实现人脸识别【Users】
- struts+hibernate+oracle+easyui实现lazyout组件的简单案例——OpSessionview实现
- ./NISwGSP: error while loading shared libraries: libopencv_stitching.so.3.0: cannot open shared obje
- html session 登录页面跳转页面跳转页面,session失效后跳转到登陆页面