浅谈Java设计模式——模板方法模式(TemplateMethod)

java设计模式之模板方法设计模式 模板方法是基于继承实现的,在抽象父类中声明一个模板方法,并在模板方法中定义算法的执行步骤(即算法骨架)。在模板方法模式中,可以将子类共性的部分放在父类里实现,而特性部分在子类中实现,只需将特性部分在父类中声明成抽象方法即可,使得子类可以在不改变算法结构的情况下重新定义算法中的步骤,不同的子类可以以不同的方式来实现这些逻辑。模板方法模式是所有模式中最为常见的几个模式之一,是基于继承的代码复用的基本技术,没有关联关系。因此,在模板方法模式的类结构图中,只有继承关系。 阅读详情

 

一、概述

        定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。有些时候我们做某几件事情的步骤都差不多,仅有那么一小点的不同,在软件开发的世界里同样如此,如果我们都将这些步骤都一一做的话,费时费力不讨好。所以我们可以将这些步骤分解、封装起来,然后利用继承的方式来继承即可,当然不同的可以自己重写实现嘛!这就是模板方法模式提供的解决方案。

        所谓模板方法模式就是在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。

        模板方法模式就是基于继承的代码复用技术的。在模板方法模式中,我们可以将相同部分的代码放在父类中,而将不同的代码放入不同的子类中。也就是说我们需要声明一个抽象的父类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法让子类来实现剩余的逻辑,不同的子类可以以不同的方式来实现这些逻辑。所以模板方法的模板其实就是一个普通的方法,只不过这个方法是将算法实现的步骤封装起来的。

二、使用场景

1.一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。 

2.各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。 首先识别现有代码中的不同之处,并且将不同之处分离为新的操作。 最后,用一个调用这些新的操作的模板方法来替换这些不同的代码。

3.控制子类扩展。

三、参与者

1.AbstractClass 定义抽象的原语操作(primitiveoperation),具体的子类将重定义它们以实现一个算法的各步骤。 实现一个模板方法,定                              义一个算法的骨架。 该模板方法不仅调用原语操作,也调用定义在AbstractClass或其他对象中的操作。

2.ConcreteClass 实现原语操作以完成算法中与特定子类相关的步骤。

四、类图

五、示例代码

1.AbstractClass

/**
 * AbstractClass
 * @author zhipeng_Tong
 */
public abstract class Template {
    public void print() {
        System.out.println("打印机开始打印:");
        content();
    }

    // 需要子类实现,也就是模板里需要填的内容
    protected abstract void content();
}

2.ConcreteClass

/**
 * ContreteClass
 * @author zhipeng_Tong
 */
public class ContreteTemplateA extends Template {
    @Override
    protected void content() {
        System.out.println("ContreteTemplateA......打印如下内容");
        System.out.println("小二小二郎");
        System.out.println("背着书包上学堂");
    }
}
/**
 * ContreteClass
 * @author zhipeng_Tong
 */
public class ContreteTemplateB extends Template {
    @Override
    protected void content() {
        System.out.println("ContreteTemplateB......打印如下内容");
        System.out.println("太阳当空照");
        System.out.println("小鸟说早早早");
    }
}

3.测试代码

public class Client {
    public static void main(String[] args) {
        Template contrete = new ContreteTemplateA();
        contrete.print();

        System.out.println();
        contrete = new ContreteTemplateB();
        contrete.print();
    }
}

运行结果:

打印机开始打印:
ContreteTemplateA......打印如下内容
小二小二郎
背着书包上学堂

打印机开始打印:
ContreteTemplateB......打印如下内容
太阳当空照
小鸟说早早早

 

医疗器械软件测试输出内容(1) *单元测试(Unit Testing):**单元测试是软件测试的最底层,用于验证软件中最小的可测试单元——函数、方法或模块。系统测试是在集成测试之后进行的,它对整个系统进行测试,验证系统在不同部分集成在一起后是否满足需求和规格。: 集成测试是在单元测试之后进行的,它关注不同单元之间的交互和集成。对于不同安全级别的软件(IEC 62304 A类、B类、C类),在体系上要求输出的文件内容有所区别。**说明:**将集成测试和软件系统测试合并为一项单一的计划和一组活动是可接收的。 阅读详情

相关推荐

SpringBoot与锐浪报表服务器深度整合实战指南

本文详细介绍了SpringBoot与锐浪报表服务器的深度整合实战指南,包括环境准备、Windows/Linux系统配置、核心功能实现代码解析及常见问题解决方案。通过具体案例和代码示例,帮助开发者高效完成报表系统的集成与部署,提升企业级应用的报表处理能力。

weixin_29238147的博客 369

23种设计模式之模板方法模式

文章目录模板方法模式模板方法模式的优缺点使用场景 模板方法模式 模板方法模式法(Template Method)定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。 模板方法模式包含以下主要角色: 抽象类(Abstract Class):负责给出一个算法的轮廓和骨架。它由一个模板方法和若干个基本方法构成。 模板方法:定义了算法的骨架,按某种顺序调用其包含的基本方法。 基本方法:是实现算法各个步骤的方法。基本方法又可以分为三种: 抽象

zt的博客 1190

告别安装报错!保姆级教程:用阿狸狗破戒大师V3.2.6搞定Cadence 17.4完整安装与补丁

本文提供Cadence 17.4的完整安装与破解教程,特别针对国内用户常见问题优化。从前期准备、镜像处理到阿狸狗破戒大师V3.2.6的智能破解,再到补丁管理与性能调优,详细指导每一步操作,确保一次性安装成功并提升设计效率。

weixin_30632089的博客 832

Java设计模式—模板方法模式

  (尊重劳动成果,转载请注明出处:https://blog.youkuaiyun.com/qq_25827845/article/details/51868973冷血之心的博客)   目录 1、定义: 2、通用类图如下: 具体模板: 3、通用代码如下: 抽象模板类: 具体模板类: 场景类: 优点: 缺点: 总结: 模板方法模式仅仅使用了Java的继承机制,但它是一个应用非常广泛的...

冷血之心的博客 1万+

DexProtector内存态匿名段检测绕过与dex重组技术

Dex文件是Android应用的核心执行单元,其结构规范(如header_item、class_def_item、code_item)决定了运行时加载与解析的底层逻辑。DexProtector通过将dex数据拆解为多个无文件名、受保护的内存匿名段(如[anon:dp_header]、[anon:dp_code]),规避传统基于文件特征或标准加载路径的检测机制。该策略依赖Android mmap内存管理与ART虚拟机对dex结构的刚性要求,形成可被观测的布局规律。理解其内存态组织原理,结合权限/大小/命名/内

weixin_30855761的博客 688

Landsat 9 数据预处理第一步:在ENVI里正确加载影像的保姆级指南(含MTL文件处理)

本文详细介绍了Landsat 9数据在ENVI中的预处理流程,重点讲解了MTL文件的关键修改与正确加载方法,帮助遥感新手快速掌握数据加载技巧。通过辐射定标、大气校正等步骤,确保数据达到分析就绪状态,适用于土地覆盖分类等高级应用。

weixin_29201313的博客 207

【设计模式】Java设计模式——模板方法模式(Template Pattern)

【设计模式】Java设计模式——模板方法模式

Dust_heart的博客 2312

浅谈Mike 3D中制作垂向水温分层边界

本次以水温分层为例进行讲解,可应用于水库的水温分层模拟中

zhuzhujiayoua的博客 1408

Java 设计模式-模版方法模式

java 设计模式-模版方法模式

精神小牛马 5280

96.在 Vue 3 中使用 OpenLayers 探究加载 Point、Polygon 的极限

在前端 GIS(地理信息系统)开发中,OpenLayers 作为一个功能强大的 Web 地图库,广泛用于加载地图、渲染矢量数据(点、线、面)、叠加图层等场景。然而,当涉及到。

小彭的博客 1154

[HBM] RAM Cell Self Repair | 内存单元自我修复

对抗错误的大都是冗余,内存颗粒在设计的时候也考虑增加冗余。具体的说:添加冗余或备用的存储单元行和列,及时将测试中的故障进行修复和替换,存储器修复包括行修复,列修复或两者的组合。

串起点滴 783

浅谈JAVA设计模式之——模板方法(TemplateMethod)

一、概述 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 二、适用性 1.一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。 2.各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。 首先识别现有代码中的不同之处,并且将不同之处分离为新的操作。 最后,用一

冰河的专栏 2065

基于STM32的智能快递柜设计(全部资料)

本文设计了一种基于STM32F407ZGT6的智能快递柜系统,通过模块化硬件设计和软件算法优化,实现了24小时无人值守、温湿度智能调控、远程监控等功能。系统集成OLED显示、GSM通信、舵机控制、超声波检测等模块,存取响应时间≤3秒,识别准确率达99.2%,较传统模式效率提升60%。测试表明系统运行稳定,用户满意度达92%,具有成本低、安全性高、可扩展性强等特点,为智慧物流末端配送提供了创新解决方案。未来可引入AI算法、太阳能供电等功能进一步优化系统性能。

3254968421的博客 584

浅谈java设计模式在Spring中的应用(二)

Spring是个优秀的开源框架,主要应用于业务的处理,它和持久化框架以及展现层框架有着很大的不同。因此,Spring框架中用到了很多优秀的设计模式。通过对spring源代码的分析,讲解spring源码中应用到的设计模式,以及这些设计模式所带来的好处。 首先是spring在web应用下的启动。spring有个listener名为ContextLoaderListener,这个listener里边有...

老徐的天上人间 258

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Java设计模式之模板方法模式

​ 一、定义: 定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类不改变一个算法的结构即可重定义算法的某些特定步骤。 模板方法模式的结构图: ​ 模板方法模式有如下角色: 1、AbstractClass:抽象类,定义了一套算法框架。 2、ConcreteClass:具体实现类。 二、模板方法模式的实现: 1、创建抽象类,定义算法框架: /** * 创建抽象类,定义算法框架 */ public abstract class AbstractSwordsman { //空实现方法

红日 5451

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Java设计模式之模板方法(Template Method)模式

模板方法(Template Method)设计模式为子类定义算法的骨架,而将算法中某些步骤的实现延迟到子类中。这使得子类可以在修改算法的结构上有自己的变化。

小虎哥的技术博客 1942

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【设计模式】Java 设计模式之模板方法模式(Template Method)

模板方法模式是一种灵活且强大的设计模式,通过抽象类和具体子类的组合,实现算法结构的灵活扩展。它遵循开闭原则,对扩展开放,对修改封闭,提高了代码的可维护性和可扩展性。该模式与面向对象设计的其他原则和实践紧密相关,如单一职责原则和接口隔离原则。然而,在使用时也需注意避免过度使用导致类数量增加。模板方法模式广泛应用于各种实际项目中,如在线支付系统、文件处理、Web开发等,可帮助构建通用的流程并允许自定义逻辑。通过深入理解其原理和注意事项,并结合实际应用,我们可以更好地利用模板方法模式提升软件系统的性能和可维护性。

新手村长的专栏 3641

JAVA设计模式之模版方法模式详解

模板方法模式(template method pattern)原始定义是:在操作中定义算法的框架,将一些步骤推迟到子类中。模板方法让子类在不改变算法结构的情况下重新定义算法的某些步骤。模板方法中的算法可以理解为广义上的业务逻辑,并不是特指某一个实际的算法.定义中所说的算法的框架就是模板, 包含算法框架的方法就是模板方法.

励志成为一名优秀的全能型软件开发工程师。 3460

【设计模式】用Java实现模板模式

模板模式(Template Pattern)是一种行为设计模式,它定义了一个操作中的算法骨架,将一些步骤延迟到子类中实现。模板模式使得子类可以在不改变算法结构的情况下重新定义算法的某些步骤。抽象模板(Abstract Template)和具体模板(Concrete Template)。抽象模板定义了算法的骨架,包含了一些抽象方法和具体方法,而具体模板实现了抽象模板中定义的抽象方法。当存在多个相关的算法或行为,并且需要在运行时动态选择其中之一时,策略模式非常有用。

分享Java硬核干货 1万+

设计模式-模板方法模式

模板方法模式介绍 定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改 变一个算法的结构即可重定义该算法的某些特定步骤。通用类图如下所示: 模板方法模式确实非常简单,仅仅使用了Java的继承机制,但它是一个应用非常广泛的 模式。其中,AbstractClass叫做抽象模板,它的方法分为两类: 基本方法: 基本方法也叫做基本操作,是由子类实现的方法,并且在模板方法被调用。 模板方...

kevin的博客 623

JAVA设计模式-模板模式

2、简单说,模版方法模式定义一个操作中的算法的骨架。而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构,就可以重定义该算法的某些特定步骤。1、模版方法模式,又叫模版模式,在一个抽象类公开定义了执行他的方法的模板,它的子类可以按需重新方法实现,单调用将抽象类中定的方式进行。3.1、在模版方法模式的父类中,我们可以定一个方法。选材、浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的。,因此就直接使用,不再使用传统的方案来引出模板方法模式。通过添加不同的配料,可以制作出不同口味的豆浆。

CB_Beginner的博客 1540

Java设计模式-模板方法模式

模版方法模式(Template Method Pattern)是一种行为设计模式,它定义了一个算法的骨架,将一些步骤的具体实现延迟到子类中。模版方法模式通过把固定不变的部分抽取到父类中,将可变的部分留给子类来实现,从而实现代码复用和扩展。

yourgod007的博客 1115

JAVA设计模式之模板模式

设计模式 设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、...

bernardGao94的博客 1753

Java设计模式:模板方法模式

在软件开发中,某个方法的实现需要多个步骤,其中有些步骤是固定的,而有些步骤并不固定,存在可变性。为了提高代码的复用性和系统的灵活性,可以使用模板方法模式的设计模式对这类情况进行设计。在模板方法模式中将实现功能的每一步骤所对应的方法称为基本方法,而将调用这些基本方法同时定义基本方法的执行次序的方法称为模板方法。定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。

Java技术一点通 1595

Spring系列之模板方法汇总

模版方法设计模式。Spring模板方法模式实际是模板方法模式和回调模式的结合 JdbcTemplate、JmsTemplate、JpaTemplate、MongoTemplate、RestTemplate、AsyncRestTemplate、HibernateTemplate、RetryTemplate、RedisTemplate

lonelymanontheway的博客 1414

JAVA设计模式13:模版方法模式,将一些步骤延迟到子类中实现

模板方法模式是一种行为设计模式,它定义了一个操作中的算法的框架,将一些步骤延迟到子类中实现。在模板方法模式中,父类定义了一个模板方法,该方法提供了一个通用的算法框架,其中包含了一系列的步骤,而这些步骤的具体实现可以由子类进行重写。

Designer 小郑的技术博客 853
上一篇: 浅谈Java设计模式——享元模式(Flyweight)
下一篇: 浅谈Java设计模式——命令模式(Command)
IdealSpring
博客等级 码龄8年 9粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值