简单理解常用设计模式(七)模板方法模式(抽取公共的)

模板设计模式_构建公共通用的Dao NULL 博文链接:https://huagenli.iteye.com/blog/570695 立即下载

这是一个通俗易懂的模式,在笔者学习代码重构的时候经常会用类似的方式提炼代码。

模板方法:定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即能重定义算法的某些步骤。

原书UML如下:


原书demo如下:

TestPaper类主要内容如下:


子类如下:


调用类如下:


原书demo是c++,不过和java很相似,语义可以理解。

这里根据案例解释下模板方法的定义:

算法骨架,即TestPaper类内容,将一些步骤延迟到子类中,即TestPaper类的Answer()方法根据得到的值,使testQuestion()方法执行不同的逻辑,得到不同的结果。达到定义的“子类可以不改变算法的结构即能重定义算法的某些步骤”。

模板方法是通过不变的行为移动到父类,去除子类的重复代码来体现自己的优势,同时提供了很好的代码复用的平台。

公共方法抽取 实际开发中,对相关通用方法进行的抽取汇总,希望能够对大家起到参考的作用 立即下载

相关推荐

安卓光速虚拟机ADB调试实战:从密钥配置到设备连接

本文详细介绍了在安卓光速虚拟机中进行ADB调试的完整实战流程。核心在于通过密钥配置解决设备未授权问题,并启用网络调试与端口映射,最终实现电脑与虚拟机的稳定连接。文章提供了从原理理解、脚本修改到实战命令和疑难排查的全方位指南,帮助开发者和爱好者高效利用光速虚拟机作为移动测试沙盒。

CAT789的专栏 557

Java设计模式之策略模式

Java 设计模式之策略模式 策略模式作为软件的设计模式,其设计的出发点是在对象中某个行为可能因为不同场景有多种变化或者算法实现的时候运用的一种设计模式,例如界面获取的途径,在有网的情况下从网络获取数据,没网的情况下可以从缓存中获取数据,又比如缴纳税款,每个人收入结构的差异,导致每个人的缴税算法不一致等等。什么是策略模式 策略模式就是定义了不同的算法族,拥有不同算法的对象可以相互替换,此

guhuo123456的专栏 336

PSCAD学习笔记(1)Project Settings(重点snapshot设置)

若不勾选,则横坐标为实际时间2-7s,故障显示在第3s发生。图片中时间坐标轴显示为0-5s,故障时刻显示为第1s,即0-1s展示系统稳态,1-5s展示系统发生故障后的暂态响应,如何通过快照文件实现?勾选该项后,使用快照文件启动仿真会将仿真起始时间强制设置为0s,反之不勾选则依据快照文件保存的时间轴继续(即坐标为实际时间)。如果已有的快照文件保存的是0s至5s的仿真内容,则仿真运行时间从5s开始,到10s结束。如果已有的快照文件保存的是0s至2s的仿真内容,则仿真运行时间从2s开始,到7s结束;

gwenh的博客 7343

重学 Java 设计模式:实战适配器模式「从多个MQ消息体中,抽取指定字段值场景」

作者:小傅哥 博客:https://bugstack.cn 沉淀、分享、成长,让自己和他人都能有所收获!???? 一、前言 擦屁屁纸80%的面积都是保护手的! 工作到3年左右很大一部分程序员都想提升自己的技术栈,开始尝试去阅读一些源码,例如Spring、Mybaits、Dubbo等,但读着读着发现越来越难懂,一会从这过来一会跑到那去。甚至怀疑自己技术太差,慢慢也就不愿意再触碰这部分知识。 而这主要的原因是一个框架随着时间的发展,它的复杂程度是越来越高的,从最开始只有一个非常核心的点到最后开枝散叶。这就像

bugstack虫洞栈 2826

【路由交换】思科5506防火墙三区域互通

思科 5506 inside outside dmz 互通

baidu_22774701的博客 6206

雪莉果的Axure原型工厂vol.006 中继器应用(二)——多选穿梭框

如果你用axure有一段时间了,那么你很快就能琢磨出一个大体设计流程,比如加一个中间过度的元件,来储存需要穿梭的内容;但是如果你再想一想,就会发现,这样做,似乎只能解决单选,那么多选需要怎么操作呢? 这时候,中继器就会告诉你,我还能做的更多。

weixin_43829792的博客 977

【Apollo规划模块探秘】—— 场景(Scenario)驱动的决策引擎

本文深入解析了Apollo自动驾驶平台规划模块的核心机制——场景(Scenario)驱动的决策引擎。文章通过类比日常驾驶,阐述了规划模块如何像经验丰富的司机一样,根据不同的路况(如车道跟随、无保护左转)切换不同的“驾驶模式”。重点剖析了场景管理器(ScenarioManager)如何基于感知信息进行场景判断与切换,以及“场景-阶段-任务”双层状态机如何精密协作,实现灵活、高效且安全的轨迹规划。

rnn9storyteller的博客 278

运用Java实现服务器。要求:运用设计模式,处理多线程

在 Java 中实现服务器可以使用多线程和设计模式来实现。 一种常用的方法是使用线程池来管理多个线程,避免线程频繁创建和销毁带来的性能问题。可以使用 Executor 框架中的 ThreadPoolExecutor 类来实现线程池。 另外,使用设计模式可以帮助组织代码结构和解决常见问题。例如,可以使用工厂模式来创建线程池,使用责任链模式来处理请求,使用单例模式来管理全局配置。 通过使用 java....

weixin_42604188的博客 106

复现CVE-2014-085(Apache ZooKeeper 未授权访问漏洞)

默认安装配置完的zookeeper允许未授权访问,管理员未配置访问控制列表(ACL)。导致攻击者可以在默认开放的2181端口下通过执行envi命令获得大量敏感信息(系统名称、java环境)导致任意用户可以在网络不受限的情况下进行未授权访问读取数据。

记录并分享学习安全的知识点.. 2175

Muse Spark:功能、性能测试及使用方法

对于一个仅用九个月时间从零开始重建的团队来说,这样的健康状况和多模态测试结果无疑是迈出了坚实的第一步,并且经受住了独立测试的考验。Muse Spark 为每个产品确定了最重要的主题(A 产品的发布策略、B 产品的定价策略、C 产品的规模化策略),并提出了切实可行的具体行动方案。抽象视觉推理也遵循同样的模式:Muse Spark 的 ARC-AGI-2 得分为 42.5,而 GPT-5.4 和 Gemini 的得分都在 70 分左右。他的离职是由于组织结构的变化限制了他的角色,以及团队转向闭源开发。

xiaoshun007的专栏 123

Java设计模式 | 浅析模板方法模式

目录什么是模板方法模式抽取公共部分做成抽象类 什么是模板方法模式 这个模式我认为和单例模式一样,都是比较简单好懂的模式。而且在学习Java多态的时候也会直接用到的。其主要内容就是将各个类公共的方法抽取出来,做成一个抽象类,将公共方法的具体实现延迟到子类中去。这样可以避免代码高度重复且难以维护。举例来说: 假如我们需要一个计算一个方法时间开销的代码。如果写进一个具体方法里,那么在测试另一个方法时,就又需要编写一次。 long start = System.currentTimeMillis(); code(

qq_40291234的博客 361

Autosar诊断实战系列05-Dcm之0x27加解密服务配置开发详解

UDS 0x27服务实战开发介绍,对解锁尝试次数及delay时间进一步解释。

initiallizer的博客 1993

设计模式-模板方法模式

模板方法模式是一种行为型设计模式,它定义了一个操作中的算法的骨架,将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。它封装了一个固定流程,该流程由几个步骤组成,具体步骤可以由子类进行不同的实现,从而让固定的流程产生不同的结果。在软件工程中,模板方法模式是一种常用的设计模式,用于解决算法的框架和部分步骤已经确定,而部分步骤需要根据不同情况进行变化的问题。

技术人集结地 1337

温度PID控制PLC程序

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

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

设计模式之模板方法模式:咖啡,茶,和代码

设计模式之模板方法模式:咖啡,茶,和代码

犬余的博客 1534

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

设计模式初探-模板方法模式

模板方法模式(TEMPLATE METHOD),用于定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤,属于类行为型模式。模板方法模式是结构最简单的行为型设计模式,在其结构中只存在父类与子类之间的继承关系。通过使用模板方法模式,可以将一些复杂流程的实现步骤封装在一系列基本方法中,在抽象父类中提供一个称之为

Java Dynamic的专栏 2404

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

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

设计模式详解——模板方法模式

*** 抽象订单模板类*//*** 模板方法:固定下单流程* final 防止子类篡改流程*/// 1. 参数校验(通用)// 2. 库存处理(子类实现)// 3. 价格计算(子类实现)// 4. 保存订单(通用)// 5. 发送通知(通用)// 通用方法:父类实现System.out.println("参数校验通过");// 抽象方法:子类必须实现// 通用方法System.out.println("订单已保存到数据库");

JAVA爱好者的专栏 419

设计模式之模板方法模式

官方解释:定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。设计模式大咖闫宏解释:模板方法模式是类的行为型模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。个人理解。

sxlishaobin的博客 990

设计模式系列之 模板方法模式

定义 在模板方法中定义一个算法的骨架,而将部分步骤延迟到子类中,使子类在不改变算法结构的情况下,重新定义算法中的部分步骤。 通常情况下,算法指用于处理某类任务的确切的指令序列,是对处理逻辑的封装。模板方法模式定义中的骨架同样是对处理逻辑的封装,只是它的封装粒度比算法定义的粒度要稍大。 模式结构 该模式只包含了模板定义者和模板使用者两类。在java实现中,两者存在继承关系,模板定义者为基类,模板使用者为子类。 模板基类 该类被定义为抽象类,包括模板方法、公共方法、钩子方法、抽象方法。其中 不变的共有方法

TylerGuoj的博客 2385

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

定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的重复代码全部在父类里面,不同业务的,抽取给子类进行实现。 模板方法模式 核心:说白了,就是将一些相同操作的代码,封装成一个算法的骨架。核心的部分留在子类中操作,在父类中只把那些骨架做好。 例如: 去银行办业务,银行给我们提供了一个模板就是:先取号,排对,办理业务(核心部分我们子类完...

LeoByte的编程驿站 2337

第二部分:二十三种设计模式解读——什么是模板方法模式

二十三种设计模式解读——什么是模板方法模式 author:陈镇坤27 日期:2022年3月29日 文章目录二十三种设计模式解读——什么是模板方法模式一、模板方法模式1、定义2、应用场景3、通用范本4、示例讲解5、拓展1)通过钩子实现自适应定制模板执行情况6、总结 —————————————————————————————— 一、模板方法模式 1、定义 Define the skeleton of an algorithm in an operation,deferring some steps to sub

weixin_45528105的博客 788

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

模板方法模式

6个日的博客 953

模板方法模式

模板方法模式:Template Method 定义一个操作的算法骨架,将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。 这个模板方法就可以理解为我们高中的英语作文,我们一般都会储备一个范文,在真正考试写作文的时候,我们直接将背好的范文不变的那部分直接写上去。作文的主体内容部分,再根据作文的主题进行一个具体的修改。 我们在这里就是用了模板方法模式,背好的范文就是模板方法,契合主题部分的作文内容就是具体的子类。模板方法是一个十分简单的设计模式,我们可以.

持续Java学习中 312
上一篇: 简单理解常用设计模式(六)工厂模式
下一篇: 简单理解常用设计模式(八)外观模式(例如客户、基金、用户)
gcc_front
博客等级 码龄9年 16粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值