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的两个子类-ShortEssayLongEssay

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图将模板模式的上述示例实现表示为:

ShortEssayLongEssay定义了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.InputStreamjava.io.OutputStream的所有非抽象方法都使用模板模式

翻译自: https://www.javacodegeeks.com/2019/09/template-method-pattern-java.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/341736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是单模单纤/双纤光纤收发器?

光纤收发器,是一种将短距离的双绞线电信号和长距离的光信号进行互换的以太网传输媒体转换单元,按其所需主要分为单纤光纤收发器和双纤光纤收发器,接下来我们就来详细介绍下什么是单模单纤/双纤光纤收发器?单模单纤和单模双纤光纤收…

什么是以太网光纤收发器,其产品特点和技术参数都有哪些?

以太网光纤收发器是一款提供以太网数据信号到光纤数据信号的双向透明转换器,可以将以太网信号通过光纤线路传输突破传输距离100米的限制,使得以太网网络覆盖得到极大的延伸。光纤收发器的出现,确保能够顺畅的将电信号与光纤信号相互转换&…

什么是CAN总线中继器?

CAN网桥(Bridge)是一个智能的中继器。使用CAN网桥对设备进行互连,克服了CAN总线结点个数及通信距离的物理限制,能有效扩充CAN网络的结点总数,延长通信距离。今天,飞畅科技的小编为大家详细介绍下CAN总线中继…

一文读懂工业设备的两种通讯方式:现场总线和工业以太网

随着传统制造企业正在加快智能制造转型的进程,工业互联网迅速在全世界范围内兴起。在工业互联网的技术构架中,通过各类通讯方式接入不同设备、系统和产品,来采集海量数据是其重要的一环。本文将重点介绍工业底层设备的两种通讯方式&#xff1…

Java中的中介器设计模式

在本教程中,我们将学习一种行为模式,该行为模式将促进彼此通信的多个对象之间的松散耦合。 Mediator设计模式背后的想法是拥有一个中心对象,该对象封装了一组对象之间的交互方式。 在调解器模式中,我们在称为调解器的单独类中提取…

什么是中国1号信令?

中国1号信令是在电话自动交换网中,我国所用的随路信令的总称,目前在国内长途网和市话中的局间中继线上使用。那么,什么是中国1号信令?中国1号信令的分类又有哪些呢?接下来我们就跟随飞畅科技的小编一起来详细了解下吧&…

ejb生命周期_无状态EJB:池化和生命周期

ejb生命周期无状态EJB池和生命周期的概述视图(注释)。 对新手有用。 。 。 。 。 EJB池:快速概述 EJB实例存储在称为EJB池的位置-这不过是内存中的缓存 。 无状态EJB通常按需实例化,即,当客户端调用Bean上的方法时。…

单E1光端机分类及技术指标详解

单E1光端机是一种将G.703的E1信号调制到光纤上传输的设备。采用大规模集成芯片,电路简单,功耗低,可靠性高,具有完整的告警状态指示和完善的网管功能。那么,单E1光端机分类及技术指标有哪些呢?接下来我们就跟…

光猫的分类及应用范围有哪些?

光猫也称为单端口光端机,是针对特殊用户环境而设计的产品,它利用一对光纤进行单E1或单V.35或单10BaseT点到点式的光传输终端设备。该设备作为本地网的中继传输设备,适用于基站的光纤终端传输设备以及租用线路设备。而对于多口的光端机一般会直…

什么是光纤转换器?光纤转换器转换类别介绍

光纤转换器是RS-232/422/485串行数据通过光纤的远距离传输,可以完成串口到光纤的转换,并且可以延长串行通信信号的传输距离。那么,光纤转换器转换类别有哪些呢?接下来我们就跟随飞畅科技的小编一起来详细了解下吧! 光纤…

H2数据库的Spring Boot

在本快速教程中,我们将引导一个由内存H2数据库支持的简单Spring Boot应用程序。 我们将使用Spring Data JPA与我们的数据库进行交互。 项目设置: 首先,让我们使用Spring Initializr生成我们的项目模板: 单击“生成项目”链接后&…

Java中的状态设计模式

在本教程中,我们将探讨另一种流行的行为设计模式-状态设计模式。 当我们使用可以存在于多个状态的对象时,状态设计模式的知识变得非常有用。 当对象的行为取决于其当前状态时,我们应该主要使用它。 这种模式有助于我们避免在该类的方法中对对…

串口服务器工作方式及常见异常故障问题排除方法介绍

串口设备联网服务器就像一台带CPU、实时操作系统和TCP/IP协议的微型电脑,方便在串口和网络设备中传输数据。您可以在世界任何位置通过网络,用您的计算机来存取,管理和配置远程的设备。但是我们在实际使用串口服务器的过程中,难免会…

E1立体声卡侬头(XLR) 音频编解码器产品介绍

FCA系列音频编解码器是一种采用数字处理芯片及大规模FPGA、数字编解码转换和时钟恢复技术方法设计的基于E1(2M)通道传输立体声广播信号的广播传送设备系统,它可以借助目前成熟可靠的E1传输系统网,建立起数字立体声广播传送系统网络,实现广播传…

E1视音频编解码器应用方案详细说明

E1音频编解码器,是采用数字处理芯片及大规模FPGA、数字编解码转换和时钟恢复技术方法设计的。适用于广播节目源传输的设备。音频编码器是将输入的立体声音频信号,经A/D数字编解码变换或数据格式转换后,重新成帧,形成串行数据流&am…

Java中的外观设计模式

立面是指建筑物的外观。 当穿过街道时,我们所看到的只是建筑物的外观。 该图面抽象了建筑物的所有复杂实施细节。 同样, 外观设计模式旨在为子系统中的一组接口提供统一的接口。 这个统一的接口对客户端隐藏了子系统的复杂性。 它属于结构模式类别。 J…

串口服务器介绍及产品特点详解

串口服务器提供串口转网络功能,能够将RS-232/485/422串口转换成TCP/IP网络接口,实现RS-232/485/422串口与TCP/IP网络接口的数据双向透明传输。使得串口设备能够立即具备TCP/IP网络接口功能,连接网络进行数据通信,极大的扩展串口设…

串口服务器应用领域及应用方案详解

串口服务器提供串口转网络功能,使得串口设备能够立即具备TCP/IP网络接口功能,连接网络进行数据通信,极大的扩展串口设备的通信距离,应用领域非常广泛。接下来我们就来为大家详细介绍下串口服务器的应用领域及应用方案,…

多串口服务器的工作方式及接线示意图介绍

串口服务器提供串口转网络功能,能够将RS-232/485/422串口转换成TCP/IP网络接口,实现RS-232/485/422串口与TCP/IP网络接口的数据双向透明传输。那么,多串口服务器是怎么工作,怎么接线的?接下来就由飞畅科技小编一起来为…

多路串口服务器的应用及应用范围介绍

串口服务器的应用领域很是广泛,主要应用在门禁系统、考勤系统、售贩系统、POS系统、楼宇自控系统、自助银行系统、电信机房监控、电力监控等。接下来就由飞畅科技的小编来为大家详细介绍下多路串口服务器的应用及应用范围,感兴趣的朋友就一起来看看吧&am…