c++之模板方法模式

模板方法模式(附C++代码示例) 阅读详情

模板方法属于属于行为型模式

定义:定义一个操作中的算法骨架,将一些步骤延迟到子类中实现。

优点:使得子类可以不改变一个算法的结构,就可以重定义改算法的某些特定的步骤,将不变的行为移动到父类,用于去除子类中的重复代码,提供了一个很好的代码复用平台。

场景栗子:连接设备的分为TCP和串口连接

代码:

#include <iostream>

using namespace std;

class IConnect
{
public:
	int connectDevice()
	{
		configArgs();
		cout << "配置完毕" << endl;
		if (!connect())
		{
			return -1;
		}
		cout << "连接成功" << endl;
		return 0;
	}
protected:
	virtual void configArgs() = 0;
	virtual bool connect() = 0;

};

class TcpConnect : public IConnect
{
public:
	virtual void configArgs()
	{
		cout << "tcp连接" << endl;
	}
	virtual bool connect()
	{
		cout << "开始tcp连接" << endl;
		return true;
	}
};

class UartConnect : public IConnect
{
public:
	virtual void configArgs()
	{
		cout << "串口连接" << endl;
	}
	virtual bool connect()
	{
		cout << "开始uart连接" << endl;
		return true;
	}
};

//客户端
int main()
{
	IConnect *con = new TcpConnect;
	con->connectDevice();

	cout << "-----------------" << endl;
	con = new UartConnect;
	con->connectDevice();

	if (con)
	{
		delete con;
		con = nullptr;
	}

	return 0;
}

输出效果:

C++模板方法模式(Template Method Pattern) 意图 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。该模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 适用性 一次性实现一个算法的不变的部分,并将可变的行为留給子类来实现。 各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。首先识别现在代码中的不同之处,并且将不同之处分离为新的操作。最后,用一个调用这些新的操作的模板方法来替换这些不同的代码。 控制子类扩展。模板方法只在特定点调用“hook”操作,这样就只允许在这些点进行扩展。 类图 例子场景 咖啡冲泡法 阅读详情

相关推荐

C++ 模板方法模式详解与实例

模板方法模式(Template Method Pattern)属于行为型设计模式,其核心思想是在一个抽象类中定义一个算法的骨架,而将一些步骤延迟到子类中实现。这样可以使得子类在不改变算法结构的情况下,重新定义算法中的某些步骤。它通过继承机制,实现代码复用和行为扩展,减少重复代码,提升程序的可维护性和扩展性。

qq_43441284的博客 1395

C++设计模式(18)——模板方法模式

C++ 模板方法模式

伍粟的博客 2714

概率论 知识图谱 + 实战案例解析

本文通过构建概率论知识图谱,系统梳理了从随机试验、概率、条件概率到随机变量与分布的核心概念及其内在联系。结合朴素贝叶斯分类器和蒙特卡洛模拟等实战案例,深入解析了条件概率、独立性及大数定律等理论如何应用于机器学习与实际问题求解,旨在帮助读者建立结构化思维,将理论有效转化为解决实际问题的能力。

weixin_29051193的博客 267

C++模板方法模式

C++模板方法模式

qqrrjj2011的博客 1523

光电容积脉搏波PPG信号分析笔记

脉搏波信号PPG分析笔记

teresa_zp的专栏 6477

5G-A无源物联网:深度解析“不插电“智能的底层技术原理

北京移动推出5G-A无源物联网技术,实现电动车标签"零功耗"运行。该技术通过射频能量收集(利用5G-A基站高功率信号转换为电能)和反向散射通信(调制反射信号传输数据)两大核心技术,使设备无需电池即可工作。5G-A相比4G在信号能量密度、通信速率和定位精度等方面显著提升,结合通感一体等创新技术,为无源物联网提供商用基础。该方案已在北京小区试点应用,实现电动车精准定位管理,标签寿命可达5年以上。专家预测,这项技术将大幅降低物联网部署成本,推动"万物智联"时代的到来。

通信行业老兵、物联网从业者,做一个有趣的普通人。 2013

C++设计模式之模板方法Template Method

定义一个操作中的算法的骨架(稳定),而将一些步骤延迟(变化)到子类中。Template Method使得子类可以不改变(复用)一个算法的结构即可重定义(override重写)该算法的某些特定步骤。----《设计模式》GoF结构Structure对于每一个类图,着重关注这个类中哪些是稳定的,哪些是变化的(变化的函数需要由子类去override)eg:下面红色圈圈代表上面class Library中的run方法,蓝色圈圈代表class Library中的两个虚函数。...

喜欢打篮球的普通人 1107

DCMM评估报告模板样例

这篇DCMM评估报告对某数据管理公司2020年的数据管理能力进行了全面分析。报告显示,该公司在数据战略方面取得初步进展,但在数据治理和数据架构方面仍存在明显不足,包括缺乏有效治理流程、数据质量监控不足,以及数据标准化和转换灵活性不足等问题。评估报告提出了针对性改进建议,包括完善数据战略、建立治理流程、加强质量监控和提升数据转换灵活性等,为提升数据管理成熟度提供了重要指导。

cdfunlove的博客 166

C++设计模式之模板方法模式

TemplateMethod Pattern(模版方法模式) 意图 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。是一种比较简单的设计模式,但却是代码复用的一项基本技术,在类库中尤其重要。使用的也比较普...

michael_xh的博客 335

YOLOv11改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合

可扩展的高效物体检测BiFPN(加权双向特征金字塔网络)

Limiiiing的博客 5495

ROS从入门到精通0-4:VSCode 搭建 ROS 工程环境

为了提高开发效率,可以先安装集成开发工具和使用方便的工具,本教程用VSCode搭建ROS工程环境

FRIGIDWINTER的博客 1万+

模板方法模式(Template Method Pattern) C++

模板方法模式(Template Method Pattern)是一种行为设计模式,用于定义一个算法的骨架,将一些步骤的实现延迟到子类中。在模板方法模式中,一个抽象类定义了一个模板方法,该方法包含了算法的主要步骤,而具体的实现则由子类来完成。算法的骨架由抽象类定义,而具体的实现可以在具体类中灵活地实现和修改,从而提高代码的复用性和可维护性。这就是模板方法模式的基本思想:将算法的骨架定义在抽象类中,而将具体的实现留给子类来完成。这样可以保持算法的一致性,同时又能够灵活地扩展和定制算法的具体实现。

yaoyaohyl的博客 744

YOLOv11改进策略【卷积层】| arXiv 2025 YOLO-Master中的稀疏混合专家ES-MoE 动态路由提适配 + 稀疏激活降延迟,突破精度-效率权衡

ES-MoE(Efficient Sparse Mixture-of-Experts)是为解决传统YOLO类实时目标检测器的静态计算冗余问题而提出的稀疏混合专家模块。现有YOLO架构对所有输入场景采用统一的密集计算模式,导致简单场景资源浪费、复杂场景(如密集小目标、遮挡场景)计算不足,难以平衡检测精度与推理速度。ES-MoE引入实例条件自适应计算,通过动态路由机制为不同复杂度的输入分配差异化计算资源,突破传统静态架构的精度-效率权衡限制,同时适配实时检测的轻量化需求。

Limiiiing的博客 463

【c++设计模式24】行为模式9:模板方法模式(Template Method Pattern)

模板方法模式定义了一个抽象类,该抽象类包含了一个模板方法和多个具体方法。模板方法定义了算法的基本骨架,而具体方法则由子类提供具体实现。

junxuezheng的博客 1349

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

计算机控制技术及应用

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

c++设计模式:模板方法模式(Template Method Pattern)

定义:模板方法模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 钩子的定义:钩子是一种被声明在抽象类中的方法,但只有空的或者默认的实现。钩子的存在,可以让子类有能力对算法的不同点进行挂钩。究竟需不需要挂钩,则由子类自行决定。 场景:我们有一个咖啡厅,有一个专门的配方来调制咖啡喝茶,在调制的过程中的某些

编程小生的专栏 675

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

C++模板方法模式:Template Method Pattern

模板方法模式在一个方法中定义一个算法的框架,而将一些步骤的实现延迟到子类。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。比如在案例中,加入一个默认对饮料进行打包的默认钩子方法(pack()),但是子类可以通过重写不打包饮料。钩子的存在,可以让子类有能力对算法的不同点进行挂钩。两者的共同成分是什么?模板方法类中可以有一个hook(钩子)方法,但只有空的或者默认的实现。3.这个模板方法提供了一个框架,方便其他类的咖啡因饮料加入;4.模板类只专注在算法本身,而由子类提供完整的实现;

lichengyang的博客 121

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

C++设计模式之 模板方法模式

-什么是模板方法模式(第18种设计模式)模板方法模式(Template Method Pattern)是⼀种行为型设计模式, 它定义了⼀个算法的骨架,将⼀些步骤的实现延迟到⼦类。模板方法模式使得⼦类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。准备⻝材亨饪过程上菜不同菜品的亨饪过程是不⼀样的,但是我们可以先定义⼀个”⻣架”,包含这三个步骤,亨饪过程的过程放到具体的炒菜类中去实现,这样,⽆论炒什么菜,都可以沿⽤相同的炒菜算法,只需在⼦类中实现具体的炒菜步骤,从而提⾼了代码的复⽤性。

K1_uestc的博客 1848

模板方法模式(Template Method Pattern)-c++实现

摘自 http://blog.youkuaiyun.com/rain_qingtian/article/details/11806495

目标是LINUX C++专家,不达目标誓不罢休 435

[C++]模板方法模式

模板方法模式,定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。 C++代码如下: // 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // // 参考大话设计模式 #include <iostream> using namespace std; class AbstractCla...

就是那个党伟 320

读书笔记:c++对话系列,模板方法模式(Template Method Pattern)

**模板方法模式(Template Method Pattern)**: 通过一个公共的、非虚拟的成员函数调用一个受保护的虚拟函数。文章中的Mountie类的read和write函数可能就是调用了do_read和do_write的受保护虚拟函数,这是模板方法模式的经典示例。 行为设计模式的一种,主要用于定义算法的骨架,而将一些步骤的具体实现推迟到子类中。这样,模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 核心:public非虚函数定义接口,protected虚函数定义实现。

weixin_43172531的博客 314

C++ 设计模式——模板方法模式

模板方法模式是一种行为设计模式,它定义了一个算法的骨架,而将一些步骤延迟到子类中。通过这种方式,模板方法允许子类在不改变算法结构的情况下重新定义算法的某些特定步骤。

慢慢记录,慢慢更新。 1224

(C++实现)——模板方法模式(Template Method Pattern)

概述:      我们最近在开发一个支持多种压缩类型文件的解压缩且制作成pdf的一个应用。对我们的架构来说我们需要支持多种压缩文件类型,但却有固定的操作顺序(先解压缩,在读取里面的文件分析、制作pdf)。我们抽取他们的共同点:这些操作的固定顺序,把他放到我们的父类里;他们的变化点:这些个具体的操作,去留给不同的子类去实现。这个就是模板方法模式,他定义一个操作中的算法的骨架(例子中的固定的操作

晴天的专栏 1980

C++高效实现模板方法模式

模板方法模式——在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。下面,是大家很熟悉的一段代码——《Head First 设计模式》中第8章模板方法模式中星巴兹咖啡因饮料代码的C++版。#include class Coffee{public: void PrepareRecipe() //星巴兹咖啡冲泡法 {

1938
上一篇: c++之外观模式
下一篇: c++函数模板与类模板
Qt上位机开发
Qt上位机开发 领域专家: C/C++技术领域 领域专家: C/C++技术领域
博客等级 码龄9年 9664粉丝 178原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值