0

0

c++如何实现一个模板方法模式_c++行为型设计模式Template Method【框架】

尼克

尼克

发布时间:2025-12-19 16:59:02

|

818人浏览过

|

来源于php中文网

原创

模板方法模式通过抽象基类定义算法骨架,用纯虚函数强制子类实现变化步骤,用普通虚函数提供可选钩子,final修饰模板方法防止重写;CRTP可选替代虚函数以提升性能。

c++如何实现一个模板方法模式_c++行为型设计模式template method【框架】

模板方法模式在C++中通过抽象基类定义算法骨架,将可变步骤延迟到子类实现——核心是用虚函数(尤其是纯虚)封装变化点,用final修饰模板方法防止重写

定义抽象模板类:声明算法流程与钩子

在基类中用public virtual声明模板方法(通常加final),用protected pure virtual声明子类必须实现的步骤,再用protected virtual提供可选重写的钩子函数:

  • 模板方法本身不带实现,只调用其他虚函数,体现“骨架不变”
  • 纯虚函数强制子类定制关键逻辑,如doStep1()doStep2()
  • 普通虚函数(如isLoggingEnabled())默认返回false,子类按需覆盖

子类实现具体步骤:只重写虚函数,不改流程

继承抽象类后,只需实现纯虚函数,其余逻辑(如预处理、后置校验、异常包装)由父类统一控制:

  • 避免复制粘贴整个算法,也不需要调用super——C++无此语法,靠父类模板方法自动调度
  • 若某步在所有子类中逻辑相同,可在基类提供默认实现(非纯虚),子类选择性override
  • 注意构造顺序:基类构造时虚函数调用不会动态绑定,确保步骤函数不在构造/析构中被意外调用

支持编译期多态(可选):CRTP优化性能

对性能敏感场景,可用CRTP(奇异递归模板模式)替代虚函数调用,把“子类类型”作为模板参数传入基类:

先见AI
先见AI

数据为基,先见未见

下载

立即学习C++免费学习笔记(深入)”;

  • 基类template class AlgorithmBase中,用static_cast(this)->stepImpl()调用
  • 完全消除虚表开销,但失去运行时多态能力(不能存为AlgorithmBase*统一管理)
  • 适合算法固定、子类数量少且编译期可知的框架内部组件

基本上就这些。模板方法不是为了炫技,而是当多个类共享相同执行流程、仅局部步骤不同时,把它从重复代码里“提出来”——父类管顺序,子类管内容。

相关专题

更多
java多态详细介绍
java多态详细介绍

本专题整合了java多态相关内容,阅读专题下面的文章了解更多详细内容。

15

2025.11.27

java多态详细介绍
java多态详细介绍

本专题整合了java多态相关内容,阅读专题下面的文章了解更多详细内容。

15

2025.11.27

java多态详细介绍
java多态详细介绍

本专题整合了java多态相关内容,阅读专题下面的文章了解更多详细内容。

15

2025.11.27

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

464

2024.01.03

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

12

2025.12.06

页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

400

2023.08.14

Golang gRPC 服务开发与Protobuf实战
Golang gRPC 服务开发与Protobuf实战

本专题系统讲解 Golang 在 gRPC 服务开发中的完整实践,涵盖 Protobuf 定义与代码生成、gRPC 服务端与客户端实现、流式 RPC(Unary/Server/Client/Bidirectional)、错误处理、拦截器、中间件以及与 HTTP/REST 的对接方案。通过实际案例,帮助学习者掌握 使用 Go 构建高性能、强类型、可扩展的 RPC 服务体系,适用于微服务与内部系统通信场景。

0

2026.01.15

公务员递补名单公布时间 公务员递补要求
公务员递补名单公布时间 公务员递补要求

公务员递补名单公布时间不固定,通常在面试前,由招录单位(如国家知识产权局、海关等)发布,依据是原入围考生放弃资格,会按笔试成绩从高到低递补,递补考生需按公告要求限时确认并提交材料,及时参加面试/体检等后续环节。要求核心是按招录单位公告及时响应、提交材料(确认书、资格复审材料)并准时参加面试。

2

2026.01.15

公务员调剂条件 2026调剂公告时间
公务员调剂条件 2026调剂公告时间

(一)符合拟调剂职位所要求的资格条件。 (二)公共科目笔试成绩同时达到拟调剂职位和原报考职位的合格分数线,且考试类别相同。 拟调剂职位设置了专业科目笔试条件的,专业科目笔试成绩还须同时达到合格分数线,且考试类别相同。 (三)未进入原报考职位面试人员名单。

9

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 6.7万人学习

C 教程
C 教程

共75课时 | 4万人学习

C++教程
C++教程

共115课时 | 12.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号