【设计模式】Template Method伪代码

1. 不好的代码

1.1 lib.cpp

class Library{
public:void Step1(){//...}void Step3(){//...}void Step5(){//...}
};

1.2 app.cpp

class Application{
public:bool Step2(){//...}void Step4(){//...}
};int main()
{Library lib();Application app();lib.Step1();if(app.Step2()){lib.Step3();}for(int i=0; i<4; i++){app.Step4();}lib.Step5();
}

1.3 概括

在这里插入图片描述

2. 好的代码

2.1 lib.cpp

class Library{
public://稳定 template methodvoid Run(){Step1();if(Step2()){	//支持变化 ==> 虚函数的多态调用Step3();}for(int i=0; i<4; i++){Step4();	//支持变化 ==> 虚函数的多态调用}Step5();}virtual ~Library(){ }protected:void Step1(){ //稳定//...}void Step3(){ //稳定//...}void Step5(){ //稳定//...}virtual bool Step2() = 0;	//变化virtual void Step4() = 0;	//变化};

2.2 app.cpp

class Application : public Library{
protected:virtual bool Step2(){//... 子类重写实现}virtual void Step4(){//... 子类重写实现}
};int main()
{Library* pLib = new Application();pLib->Run();delete pLib;
}

2.3 概括

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/420524.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 从入门到实战12(流程控制-跳出循环语句)

我们的目标是&#xff1a;通过这一套资料学习下来&#xff0c;通过熟练掌握python基础&#xff0c;然后结合经典实例、实践相结合&#xff0c;使我们完全掌握python&#xff0c;并做到独立完成项目开发的能力。 上篇文章我们通过举例学习了流程控制语句中的循环语句。今天继续讨…

低代码开发:业务与技术的完美融合

正文&#xff1a; 随着数字化转型的加速&#xff0c;企业对应用软件的需求日益增长。然而&#xff0c;传统的开发方式往往费时费力&#xff0c;难以满足市场的快速变化。在此背景下&#xff0c;低代码开发平台应运而生&#xff0c;它们正逐步改变我们的工作方式&#xff0c;让…

从头开始学Spring—06初识声明式事务

目录 1.概念 1.1编程式事务 1.2声明式事务 2.JdbcTemplate 2.1准备工作 2.1.1加入依赖 2.1.2创建jdbc.properties 2.1.3配置Spring的配置文件 2.2测试 2.2.1在测试类装配JdbcTemplate 2.2.2测试增删改功能 2.2.3查询一条数据为实体类对象 2.2.4查询多条数据为一个…

LabVIEW灵活集成与调试的方法

在LabVIEW开发中&#xff0c;为了构建一个既便于调试又能灵活集成到主VI中的控制VI&#xff0c;开发者需要采用适当的编程方式和架构。常见的选择包括模块化设计、状态机架构以及事件驱动编程。这些方法有助于简化调试过程、提高系统的稳定性&#xff0c;并确保代码的重用性和可…

博客常见问题

hexo g 生成静态文件 hexo s 本地预览 hexo d 同步上传到git 1、输入hexo d &#xff0c;上传到git时&#xff0c;报错 看了下git的配置&#xff0c;没有问题&#xff0c;单机过去也能直接到我的git上 可能是传不过去&#xff0c;token的问题 最下面开发者设置&#xff0c;找到…

知网合作商AEPH出版,学生/教师均可投稿,优先录用教育社科领域,往期最快2周见刊

AEPH出版社旗下有5本学术期刊&#xff0c;专门出版自然科学、社会科学研究与教育领域论文的高影响力期刊&#xff0c;拥有正规ISSN号&#xff0c;出版类型涉及应用和理论方面的原创和未曾公开发表的研究论文&#xff0c;分配独立DOI号。AEPH作为中国知网&#xff08;CNKI&#…

当你忘记很久前的 DJANGO + UWSGI 项目是怎么启动的

在后端项目代码推到云服务器后&#xff0c;通常需要手动重启相关服务才会更新生效。 本人生产环境中用的是UWSGI服务器&#xff0c;更新步骤如下&#xff1a; 文章目录 UWSGI服务启动方式SYSTEMCTL 命令查看查看当前运行的 UWSGI 进程其他&#xff1a;查看 UWSGI 日志文件 重启…

Codeforces Round 970 (Div. 3)(ABCDEF)

Codeforces Round 970 (Div. 3) A:Sakurakos Exams 签到 题意:给定1,2的数量,判断是否能用加减符号使得这些1,2计算出0 void solve() {cin>>n>>m;if(n%2)cout<<"NO\n";else{if(m%20||n)cout<<"YES\n";else cout<<"…

H5咖啡品牌官网响应式HTML网站模板源码

源码名称&#xff1a;咖啡品牌官网响应式HTML网站模板源码 源码介绍&#xff1a;一款咖啡品牌官网响应式HTML网站模板源码&#xff0c;源码含有11个页面&#xff0c;可用于咖啡品牌官网。 需求环境&#xff1a;H5 下载地址&#xff1a; https://www.51888w.com/307.html

echarts 柱状图数据集结合堆叠图

效果图&#xff1a; 1.使用echarts的数据集&#xff0c;可以动态展示多组数据统计a,b,c,d…&#xff1b; 2.其中每个数据又使用堆叠图展示详细数据&#xff0c;比如a可以分成成功和失败的次数进行堆叠&#xff0c; 3.所有数据使用不同颜色进行区分&#xff0c;而每个数据的失败…

Makefile学习总结

Makefile学习总结 目录 Makefile学习总结1. Makefile介绍2. Makefile规则3. Makefile文件里的赋值方法4. Makefile常用函数4.1 字符串替换和分析函数4.2 文件名函数4.3 其他函数 5. Makefile使用示例6、多级目录通用Makefile Demo6.1 一般通用Makefile的设计思想6.2 Demo分析 参…

可筛选的课程表设计excel表格@在线写作共享表格课程表设计模板参考

文章目录 abstract表格任务1. 时间段与课次安排2. 课程种类多样3. 教师与教室安排4. 课程颜色编码5. 课表标注 参考方案:样式预览全表添加不影响筛选列的跨列显示内容方案1方案2(pass) 针对指定老师筛选并生成课表&#x1f47a;在线表格链接(wps)要点表格说明&#x1f47a;列交…

Pow(x, n)

优质博文&#xff1a;IT-BLOG-CN 题目 实现pow(x, n) &#xff0c;即计算x的整数n次幂函数&#xff08;即&#xff0c;xn &#xff09;。 示例 1&#xff1a; 输入&#xff1a;x 2.00000, n 10 输出&#xff1a;1024.00000 示例 2&#xff1a; 输入&#xff1a;x 2.100…

【spring】IDEA 新建一个spring boot 项目

参考新建项目-sprintboot 选择版本、依赖,我选了一堆 maven会重新下载一次么?

系统工程建模MBSE

################################# ############# 片段一 ############## ################################# 下图采用“V”模式显示了集成的基于模型的系统/嵌入式软件开发流程Harmony。左侧描述了自顶向下的设计流程,而右侧显示了自底而上的从单元测试到最终系统验收测试…

vue3 项目中使用git

一.vue项目创建 二.创建本地仓库并和远程仓库进行绑定 在vue3-project-git 项目文件夹下 初始化一个新的Git仓库&#xff0c;可以看到初始化成功之后就会出现一个.git文件&#xff0c;该文件包含所有必要的 Git 配置和版本控制信息。 创建远程仓库: 打开gitee ,点击右上角 ‘…

低代码用户中心:构建高效平台的新时代

一、低代码开发平台概述 低代码开发平台是一种通过图形化界面和预构建组件来简化应用开发的工具。开发者可以通过拖放组件和配置参数的方式&#xff0c;快速创建和修改应用程序&#xff0c;显著降低了编写代码的复杂度和时间成本。这种平台非常适合用来快速构建和部署企业内部…

Sapiens:人类视觉模型的基础

文章目录 摘要1、引言2、相关工作3、方法3.1、Humans-300M 数据集3.2、预训练3.3、二维姿态估计3.4、身体部位分割3.5、深度估计3.6、表面法线估计 4、实验4.1、实现细节4.2、二维姿态估计4.3、身体部位分割4.4、深度估计4.5、表面法线估计4.6、讨论 5、结论 摘要 我们介绍了 …

无线麦克风什么品牌好?麦克风领夹式的哪个牌子最好?麦克风推荐

近年来&#xff0c;无线领夹麦克风成为了网络主播、在线教育老师的新宠。它小巧便携&#xff0c;能够提供清晰的语音录制&#xff0c;完美匹配快节奏的工作与学习需求。但市场上的产品质量参差不齐&#xff0c;一些低价产品不仅音质差&#xff0c;甚至存在电池寿命短、兼容性差…

程序员的数字化工具有哪些?你用了多少?是否吓到你?

一、程序员常用的数字化工具有哪些&#xff1f; 程序员在日常工作中的数字化工具非常多样&#xff0c;涵盖了编码、测试、部署、协作等多个方面。以下是一些常见的工具&#xff1a; 集成开发环境&#xff08;IDE&#xff09;&#xff1a; IntelliJ IDEAEclipseVisual Studio Co…