13 行为模式 - 模板方法(Template Method)模式

1.用意

准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法的用意。

 

2.类图


 

3.代码

/*
 * 抽象模板纇
 */
public abstract class AbstractClass {
	public void templateMethod() {
		//调用基本方法(由子类实现)
		doOperation1();
		//调用基本方法(由子类实现)
		doOperation2();
		//调用基本方法(已经实现)
		doOperation3();
	}
	/**
	 * 基本方法的声明(由子类实现)
	 */
	protected abstract void doOperation1();
	
	/**
	 * 基本方法的声明(由子类实现)
	 */
	protected abstract void doOperation2();	
	
	/**
	 * 基本方法(已经实现)
	 */
	private final void doOperation3() {
		S.s("doOperation3();");
	}
}


/*
 * 具體模板纇
 */
public class ConcreteClass extends AbstractClass{

	@Override
	protected void doOperation1() {
		S.s("doOperation1();");		
	}

	@Override
	protected void doOperation2() {
		//像下麵這樣的調用不應當發生
		//doOperation3();
		S.s("doOperation2();");
	}
}


/*
 * 測試類
 */
public class Test {

	public static void main(String[] args) {
		AbstractClass ac = new ConcreteClass();
		ac.templateMethod();
	}
}
 

z

别再让电池充不满!用CN3791芯片设计太阳能充电电路,这几个调试坑我帮你踩了 本文详细解析了使用CN3791芯片设计太阳能充电电路时的常见调试问题及解决方案。从RCS电阻的选择到MPPT电压偏差的修正,再到线路损耗和温度补偿的优化,提供了全面的避坑指南。通过实测数据和优化方案,帮助工程师提升锂电池充电效率,确保太阳能充电电路的稳定性和可靠性。 阅读详情

相关推荐

玄机-Linux权限维持-后门

玄机-Linux权限维持-后门

m0_46439803的博客 767

设计模式-13-模板方法模式 Template method -[行为模式]

1.模板方法模式简介 它定义一个操作中的算法的框架,而将一些步骤延迟到了子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些步骤。 比如说做饭,同样的步骤不同的人做味道是不一样的。或者是造汽车,同样的步骤,造车厂商不一样,造出来的汽车质量不同。这就是模板方法模式。 2.简单案例 举个例子: 我们要做个西红柿炒鸡蛋吧;简单步骤如下: 第一步:放油 [ 这个步骤是秘方-决定了口感-不能外泄 ] 第二步:放西红柿 第三步:放鸡蛋 第四部:是否放青菜...

心要是孤单了,到了那里都是流浪~~~ 185

用 SQL 分析不同用户群组留存率

一、前言 用户增长对企业非常重要,主要包括: 新增、留存、召回 。本文介绍一个实用的分析留存率的方法: Cohort Analysis (群组分析),APP的下载量越高并不是说产品就越好,产品若没有很好的留存,花费大量时间和资源来挖掘新客户也将是竹篮打水一场空。群组分析有利于衡量用户在每个漏斗的用户流失节点、用户流失数据,从而帮助你发现产品的用户的行为模式和用户增长点。从本质上讲,群组分析Cohort Analysis为你提供了一种数据驱动的方法,用群组分析Cohort Analysis方法,可以来帮助提

qq_39984050的博客 3173

【C#设计模式】13.模板方法模式(Template Method Pattern)【行为型】

1.1 动机(Motivate) 在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架与应用之间的关系)而无法和任务的整体结构同时实现。如何在确定稳定操作结构的前提下,来灵活应对各个子步骤的变化或者晚期实现需求? 1.2 意图(Intent) 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。       ——《设计模式》GoF ......

星Yeah 的博客 2775

ODBC 连接数据库 SQL server 2008

1、打开【控制面板】-> 【系统和安全】 -> 【管理工具】-> 【数据源(ODBC)】  2、双击【数据源(ODBC)】-> 选中【系统DSN】 3、单击【添加】,会弹出如下对话框,选中【SQL server】->【完成】 4、弹出如下对话框,在【名称】中填入数据源名称 例如:我命名为: LocalServer,在【服务器】中填入计算机名或者IP地址,我连接

Christine的专栏 8518

基于Lumerical FDTD的光栅耦合器宽带特性仿真与实验验证

本文详细介绍了基于Lumerical FDTD软件对光栅耦合器进行宽带特性仿真的完整流程。通过复现一个针对1310nm波段优化的经典光栅耦合器案例,文章从结构建模、光源设置、监视器布置到仿真运行与结果分析,逐步解析了如何准确模拟其耦合效率与带宽特性,并将仿真结果与实验数据进行对比验证,为硅光芯片的设计与优化提供了实用指导。

weixin_29294597的博客 513

14、模板方法模式(Template Method)

14、模板方法模式(Template Method) 解释一下模板方法模式,就是指:一个抽象类中,有一个主方法,再定义1...n个方法,可以是抽象的,也可以是实际的方法,定义一个类,继承该抽象类,重写抽象方法,通过调用抽象类,实现对子类的调用,先看个关系图: 就是在AbstractCalculator类中定义一个主方法calculate,calculate()调用spilt()等,Plus和M

普羅●米修斯 ——— HelloWorld 1万+

用PLECS搞定三相逆变器电流环:从传递函数推导到PI参数整定的保姆级教程

本文提供了一份详细的PLECS教程,指导如何从传递函数推导到PI参数整定,实现三相逆变器电流环的闭环控制。通过坐标变换、控制器设计和仿真验证等步骤,帮助工程师快速掌握电流环控制技术,提升电力电子系统的稳定性和可靠性。

weixin_27102543的博客 399

模板方法(Template Method)模式

文章目录模板方法(Template Method)模式1. 意图2. 别名3. 动机4. 适用性5. 结构6. 参与者7. 协作8. 效果9. 实现10. 代码示例11. 已知应用12. 相关模式13. 设计原则口袋参考文献 模板方法(Template Method)模式 隶属类别——类行为型模式 1. 意图 定义一个操作中的算法的骨架,而将一些算法步骤延迟到子类中。TemplateMethod...

qq_38636211的博客 533

基于Freertos与lwip移植FreeModbusTcp协议

基于FreeRTOS的N32G457VEL7之LWIP网络协议栈移植-优快云博客。

Dd_456456的博客 3239

Clawdbot安装教程:从零开始到接入飞书

这几天,Clawdbot把整个科技圈都刷屏了。就是这个胖逼小龙虾🦞。不过现在改名叫Moltbot了。原因很简单:被Anthropic告了。Anthropic觉得Clawdbot这名字太像Claude Code的延伸产品,要求改名。真的,Anthropic你这家伙…更离谱的是,因为Clawdbot太火,Mac Mini都被抢断货了。无数人为了用它,疯狂买Mac Mini。我刚打开美团外卖,发现居然没货了???

Maynor的博客 2179

GOF23设计模式之模板方法模式(template method)

一、模板方法模式概述   模板方法模式是编程中经常使用的模式。它定义了一种操作中的算法架构,将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤。   (1)核心:      处理某个流程的代码已经都定义好了,但是其中某个节点的代码暂时不能确定,因此,采用模板方法模式,将这个节点的代码转移到子类完成。     即:处理步骤在父类...

dcpvpf6917的博客 361

FFmpeg 开发(14):Android FFmpeg + MediaCodec 实现视频硬解码

MediaCodec 是 Android 提供的用于对音视频进行编解码的类,它通过访问底层的 codec 来实现编解码的功能,是 Android media 基础框架的一部分,通常和 MediaExtractor, MediaSync, MediaMuxer, MediaCrypto, MediaDrm, Image, Surface和AudioTrack 一起使用。

字节流动 3万+

模板方法模式(Template Method)

一、模板方法模式介绍 模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的 某些特定步骤。 核心:处理某个流程的代码已经都具备,但是其中某个节点的代码暂时不能确定。因此,我们采用工厂方法模式,将这个节点的代码实现转移...

chuankangyu5735的博客 108

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

设计模式系列13:模板方法模式(Template Method Pattern)

定义定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 --《设计模式GoF》UML类图使用场景有多个子类共有的方法,且逻辑相同,可以抽象到父类中作为模板方法实现,避免代码重复。重要的,复杂的方法,可以考虑作为模板方法。C#代码实现using System; namespace DoFactory.Ga...

weixin_30367543的博客 129

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

03-模板方法(Template Method)

模板方法(Template Method)1. 定义2. 适用场景3. 要点总结4. Demo4.1 场景简介4.2 伪代码 1. 定义 定义一个操作中的算法的骨架(稳定),而将一些步骤延迟(变化)到子类中。Template Method使得子类可以不改变(复用)一个算法的结构即可重定义(override 重写)该算法的某些特定步骤。 2. 适用场景 在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架与应用之间的关系)而无法和任务的

HJ的技术博客 287

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

13.模板方法模式(Template Method) - 类行为型模式

前言 在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。 例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业务、对银行工作人员进行评分等,其中取号、排队和对银行工作人员进行评分的业务对每个客户是一样的,可以在父类中实现,但是办理具体业务却因人而异,它可能是存款、取款或者转账等,可以延迟到子类中实现。 定义 ...

u010179789的博客 194

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

面试题文档来啦,内容很多,485页!由于笔记的内容太多,没办法全部展示出来,下面只截取部分内容展示。

F1520080的博客 718

13 Template_method模板方法(行为型)

13 Template_method(行为型) 模板方法 准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。 框架已经实现了大部分,让子类去实现特定需求的东西 什么时候用 部分算法已经实现,变化的算法留给子类 为了避免代码复制,将子类...

程序员阿浪 214

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

索引 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):Template Method 模式结构样式代码。 意图 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 Template Method 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 Define the skeleton of an algor...

aijianxie8808的博客 202

C++设计模式13:Template Method 模式

C++设计模式13:Template Method 模式 引自:http://blog.sina.com.cn/s/blog_48db23f6010006ts.html var $tag=; var $tag_code=9d892723e7af482461b426c55e40738b;

zhangmiaoping23的专栏 723

Java 之 23 种设计模式解析——14、模板方法模式(Template Method)

14、模板方法模式(Template Method) 解释一下模板方法模式,就是指:一个抽象类中,有一个主方法,再定义1...n个方法,可以是抽象的,也可以是实际的方法,定义一个类,继承该抽象类,重写抽象方法,通过调用抽象类,实现对子类的调用,先看个关系图: 就是在AbstractCalculator类中定义一个主方法calculate,calculate()调用spilt()等,Plus...

毕富国的博客 577

策略模式(strategy)--模板方法模式(Template Method)

13、策略模式(strategy) 策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(可有可无,属于辅助类),提供辅助函数,关系图如下: 图中ICalculator提供统一的方法,AbstractCalculator是辅助类,提供辅助方法, pub...

2482

设计模式(4)——模板方法模式(Template Method Pattern)

模板方法,和单例模式是我认为GOF的23中最简单的两种模式。 但是我个人对模板方法的经典思想特别推崇,虽然模板方法在大对数情况下并不被推荐使用,但是这种通过父类调用子类的方法,使用继承来改变算法的一部分,是面向对象的一种基本认识。 打比方说父亲有很多理想,就行医救人吧,但是父亲医术不行,只能靠儿子,儿子长大后遵从父亲大志,春风拂面,妙手回春,实现了父亲的理想,儿子做的事情早在出生前就定下来了,

HGuang_ZJH的专栏 898

8、Template Method 模板方法

模板方法模式是在日常开发中使用最为广泛的设计模式之一。 定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤。 类图 代码实例 某日,程序员A拿到一个任务:给定一个整数数组,把数组中的数由小到大排序,然后把排序之后的结果打印出来。经过分析之后,这个任务大体上可分为两部分,排序和打印,打印功能好实现,排序就有点麻烦了。但是A有办...

sinat_37138973的博客 354

Design Pattern: Template Method 模式

学习是分享和合作式的! 转载请注明出处:http://blog.youkuaiyun.com/wdzxl198/article/details/9223275; 文章摘自: http://www.riabook.cn/doc/designpattern/; 不要将设计模式想得高不可攀,好像高手才会使用的东西,事实上如果您在下手程式之前,能稍稍对程式作个分析规划,或多或少都会用到一些模式了,模式不

Atlas2013的专栏 979
上一篇: 12 行为模式 - 策略(Strategy)模式
下一篇: 14 行为模式 - 观察者(Observer)模式
O2AtomLife
博客等级 码龄19年 2粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值