【c++设计模式】——模板方法模式

2023-11-12

模板方法模式的定义

定义一个操作中的算法对象的骨架(稳定),而将一些步骤延迟到子类(定义一个虚函数,让子类去实现),template method使得子类可以不改变(复用)一个算法结构即可重定义该算法的某些步骤。

理解模板方法模式的时候,我们需要先来看两个例子。

例子一:

假设有两种工作人员,一种程序库开发人员,一种是应用程序开发人员应用程序开发人员需要去调用程序库开发人员实现的程序库

 在程序库中,step1,step3,step4是稳定的,应用程序开发人员直接调用即可,但是step2,step5步骤是不稳定的,需要应用程序开发人员根据需求变化去实现。但是 应用程序 的实现过程中,调用程序库的 整体结构 是稳定的,每种程序开发,它们调用step1,step2,step3,step4,step5的整体结构是不变的。第一种实现是程序库开发人员只实现step1,step3,step4,应用程序开发人员实现step4,step5和整体结构。

 整体如下:

         

 

例子二:

由于应用程序 的实现过程中,调用程序库的 整体结构 是稳定的,所以程序库开发人员就定义一个run方法去实现整体结构,step2,step5是不稳定,所以就设定为虚函数,由应用程序开发人员进行重写。应用程序开发人员只需要实现step2,step5即可,不需要设计整体结构。

 

  • 操作中的算法对象的骨架(稳定)就是Library类中的run方法,如果run整体结构不稳定,则模板方法是没有用的.
  • step2,step5步骤是不稳定,可能根据不同应用需求实现的方式不稳定,所以将他们定义为虚函数,如果这两个步骤都是稳定的,那么模板方法是无效的,因为它不需要子类去重新定义这两个方法,即不许要去定义为虚函数
  • 应用程序开发人员只需要实现变化的步骤即可,整体结构则不需要重新设计。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【c++设计模式】——模板方法模式 的相关文章

  • C++设计模式(8)——命令模式

    命令模式 亦称 动作 事务 Action Transaction Command 意图 命令模式是一种行为设计模式 它可将请求转换为一个包含与请求相关的所有信息的独立对象 该转换让你能根据不同的请求将方法参数化 延迟请求执行或将其放入队列中
  • 23种设计模式之装饰模式

    装饰模式 一个简陋的房子 它可以让人在里面居住 为人遮风避雨 但如果给它进行装修 那么它的居住环境就更加宜人了 程序中的对象也与房子十分类似 首先有一个相当于 房子 的对象 然后经过不断装饰 不断对其增加功能 它就变成了使用功能更加强大的对
  • 行为型模式-策略模式

    package per mjn pattern strategy 抽象策略类 public interface Strategy void show package per mjn pattern strategy 具体策略类 用来封装算法
  • 设计模式学习笔记(一)之单例模式

    单例模式 作用 保证一个类只有一个实例 并且提供访问这个实例的全局访问点 应用场景有 数据库连接池 spring中 Bean默认是单例 Servlet中 每一个Servlet是单例 配置文件的类 一般是单例 优点 单例只生成一个实例 减少系
  • 设计模式——原型模式

    原型模式顾名思义 就是指以某个实例为原型 copy出一个新的实例 该实例属性与原型相同或者是类似 很多时候 我们需要创建大量的相同或者相似的对象 如果一个个用new 构造函数的形式去创建的话比较繁琐 就像孙悟空要想变出成千上万个猴子猴孙总不
  • 面向过程和面向对象的语言有哪些,以及优缺点(一篇文章让你理解)

    C语言是面向过程的 而C python java是面向对象的 面向过程的编程思想将一个功能分解为一 个一个小的步骤 我们通过完成一个一 个的小的步骤来完成一个程序 优点 这种编程方式 符合我们人类的思维 编写起来相对比较简单 缺点 但是这种
  • java需会(转载)

    一 基础篇 1 1 Java基础 面向对象的特征 继承 封装和多态 final finally finalize 的区别 Exception Error 运行时异常与一般异常有何异同 请写出5种常见到的runtime exception i
  • 设计模式——简单工厂模式

    简单工厂模式定义为 简单工厂模式又称为静态工厂方法模型 它属于类创建型模式 在简单工厂模式中 可以根据参数的不同返回不同类的实例 简单工厂专门定义一个类来负责创建其他类的实例 被创建的实例通常都具有共同的父类 简单工厂模式结构图 简单工厂模
  • 设计模式——导论

    作为软件开发人员 我们在平时工作的过程中 往往需要编写很多的代码来实现我们的需求 很多的时候会造成代码臃肿和代码冗余的情况 这个时候我们需要引入一个理念 设计模式 设计模式存在的意义在于 1 使得我们的代码更加精炼 2 使我们代码的可读性更
  • 设计模式-2--工厂模式(Factory Pattern)

    一 什么是工厂模式 工厂模式 Factory Pattern 是一种创建型设计模式 它提供了一种创建对象的接口 但是将对象的实例化过程推迟到子类中 工厂模式允许通过调用一个共同的接口方法来创建不同类型的对象 而无需暴露对象的实例化逻辑 工厂
  • java-IO流(5)-IO流中的设计模式(装饰器模式和适配器模式)的介绍

    目录 1装饰器模式 1 1定义 1 2代码实现 1 3装饰器特点 1 4装饰器在IO流中的使用 2配适器模式 2 1Adapter适配器 2 2代码实例 2 3适配器特点 2 4适配器优缺点 2 5适配器在IO中的使用 3装饰器与适配器异同
  • Java设计模式之装饰者设计模式Decorator Pattern

    目录 一 基本概念 二 结构 1 图示 三 案例演示 被装饰对象的基类 一个接口 有cost 和description 两个抽象方法 具体被装饰的对象 实现上面这个接口 装饰者抽象类 基类 实现drink接口 具体的装饰者类 糖 具体装饰者
  • 设计模式之访问者模式

    访问者模式 把被操作的对象作为元素 可变可拓展的操作作为访问者 可以说访问者中有很多操作 然后访问者访问元素 对该元素进行操作 不同的访问者有不同的操作 案例 定义访问者接口 public interface UniversalVisito
  • 设计模式——State(状态)模式

    目录 前言 1 定义 2 适用性 3 结构 3 1 结构图 3 2 参与者 4 应用举例 4 1 State TcpState 4 2 Context TcpConnection 4 3 ConcreteState ListeningTcp
  • 设计模式-享元模式

    一 概念 如果在一个系统中存在多个相同的对象 那么只需要共享一份对象的拷贝 而不必为每一次使用都创建新的对象 目的是提高系统性能 上面的概念乍一听好像单例模式其实不是 单例模式只保存一个对象 但是这里可以有很多个不同对象 但是每个对象只有一
  • 设计模式详解---策略模式

    1 策略模式简介 策略模式 Strategy Pattern 是一种行为型设计模式 用于在运行时根据不同的情境选择不同的算法或策略 该模式将算法封装成独立的类 使得它们可以相互替换 而且可以独立于客户端使用它们的方式 1 1 主要角色 上下
  • 在AI技术的无情侵袭下,学学Java的23种设计模式还是非常有必要的

    目前国内80 程序员的主要工作是调用组合api实现各种业务需求 在顶层架构师设定好的框架下 做着重复且无聊的编码工作 如果未来ai被广泛应用 那么被替代的风险是很高的 比较扎心的是 其实目前用ai生成片段代码已经是各个公司比较普遍的做法了
  • 设计模式(3)--对象结构(5)--外观

    1 意图 为子系统中的一组接口提供一个一致的界面 Facade模式定义了一个高层接口 这个接口使得 这一子系统更加容易使用 2 两种角色 子系统 Subsystem 外观 Facade 3 优点 3 1 对客户屏蔽了子系统组件 减少了客户处
  • 自动化测试面试题(附答案)

    1 自动化代码中 用到了哪些设计模式 单例设计模式 工厂模式 PO设计模式 数据驱动模式 面向接口编程设计模式 2 什么是断言 Assert 断言Assert用于在代码中验证实际结果是不是符合预期结果 如果测试用例执行失败会抛出异常并提供断
  • 自动化测试面试题(附答案)

    1 自动化代码中 用到了哪些设计模式 单例设计模式 工厂模式 PO设计模式 数据驱动模式 面向接口编程设计模式 2 什么是断言 Assert 断言Assert用于在代码中验证实际结果是不是符合预期结果 如果测试用例执行失败会抛出异常并提供断

随机推荐

  • Bert模型做多标签文本分类

    Bert模型做多标签文本分类 参考链接 BERT模型的详细介绍 图解BERT模型 从零开始构建BERT 强推 李宏毅2021春机器学习课程 我们现在来说 怎么把Bert应用到多标签文本分类的问题上 注意 本文的重点是Bert的应用 对多标签
  • 2022年“网络安全”赛项黑龙江省赛选拔赛 任务书

    2022年 网络安全 赛项黑龙江省赛选拔赛 任务书 2022年 网络安全 赛项黑龙江省赛选拔赛 任务书 A模块基础设施设置 安全加固 200分 B模块安全事件响应 网络安全数据取证 应用安全 400分 C模块 CTF夺旗 攻击 200分 D
  • MYBATIS-PLUS入门使用、踩坑记录

    转载 mybatis plus入门使用 踩坑记录 灰信网 软件开发博客聚合 首先引入MYBATIS PLUS依赖 SPRING BOOT项目
  • Java事件处理机制

    Java事件处理机制涉及三个成员 事件源 事件和事件监听器事件源 Java的AWT或Swing组件 该组件就是事件源 通过new关键字即可创建事件 由系统自动产生事件监听器 整个事件处理的核心 事件监听器必须实现事件监听器接口 以鼠标事件为
  • 【ES】 es

    一 说明 1 通过kibana操作es 2 使用dsl命令操作es 3 需要已经安装es 必须 4 需要已经安装kibana 非必须 5 若是没有装kibana 可以用PostMan之类的请求工具 二 基础知识 1 Elasticsearc
  • 在vue项目中用BMap百度地图自定义定位icon不显示

    我自定义了图标但是不显示 先来看一下怎么用百度地图自定义图标 var myIcon new BMap Icon 自定义图标 require assets image L gif new BMap Size 24 21 图标的宽度和高度 va
  • spring 三级缓存

    spring 三级缓存 Spring三级缓存是Spring框架用来解决循环依赖问题的一种机制 它包含三级缓存 singletonObjects earlySingletonObjects和singletonFactories singlet
  • 移植STM32官方加密库STM32Cryptographic

    感谢这位博主 文章具有很高的参考价值 STM32F1做RSA AES数据加解密 MD5信息摘要处理 我以为我爱了的博客 CSDN博客 概述 ST官方在很多年前就推出了自己的加密库 配合ST芯片用起来非常方便 支持ST的所有MCU 官方已经给
  • 怎样选择网站服务器带宽,如何选择云服务器带宽

    原标题 如何选择云服务器带宽 在一台正常使用的云服务器中 一般主要有CPU 内存 带宽 磁盘等几种配置 在云服务器运行中 带宽指在一定时间内从或向网站 服务器传输的数据量 带宽是一个量词 是指在规定时间 一般单位时间为1秒 内 从一端流到另
  • IT自由职业者的成功秘诀

    From http www csdn net article 1970 01 01 293774 导读 原文作者Greg Jorgensen是一位典型的程序员 他从1974年开始编程 曾在耐克和苹果等公司任职 他专攻修复和完善受损 被遗弃和
  • 阿里云k8s服务之间偶尔获取不到dns解析安装ACK NodeLocal DNSCache

    1 背景 feign RetryableException No route to host Host unreachable executing POST http osale thirdparty empty detect 服务突然会中
  • IT精英简历

    IT精英简历 马化腾眼下 一个34岁的中国人在世界和中国经济界可谓抢尽风头 在刚刚过去的2004年年底 他被美国 时代周刊 Time 和有线新闻网 CNN 评为2004年全球最具影响力的25名商界领袖之一 荣膺香港理工大学第四届紫荆花杯杰出
  • vue2.0 element-ui中的el-select选择器无法显示选中的内容

    我使用的是element ui V2 2 3 代码如下 当我选择值得时候 el select选择器无法显示选中的内容 但是能触发change方法 并且能输出选择的值 select vue文件
  • 动态修改iframe高度,从而自适应内容真实高度

    项目中遇到这样的情况 需要用到iframe iframe中的内容也是自己写的页面 由于页面中元素是异步加载出来的 并不能提前预知其高度 这样就不能设置iframe的高度 导致iframe会出现滚动条 用户体验不好 所以我需要能根据内容动态改
  • 41-C语言-蛇形矩阵-输出从1到n的矩阵

    问题 蛇形矩阵 构建蛇形矩阵 之后 根据条件相应输出 思路 蛇形矩阵 初始值a 0 0 为1 之后开始进行趟数变更 蛇形矩阵趟数 斜着来 斜杠 第一趟为a 0 1 和a 1 0 每一趟中的范围为0到tang次 如第一趟中a 0 1 已经赋值
  • 试题 算法训练 印章

    问题描述 共有n种图案的印章 每种图案的出现概率相同 小A买了m张印章 求小A集齐n种印章的概率 输入格式 一行两个正整数n和m 输出格式 一个实数P表示答案 保留4位小数 样例输入 2 3 样例输出 0 7500 数据规模和约定 1 n
  • 神舟电脑上的神器----“control center 管理软件”

    前言 现在有许许多多的人都爱上了神舟电脑的 物美价廉 那么在使用神舟电脑的时候 我们有哪些值得知道的事情 我认为用神舟电脑而不知道 神舟电脑上的控制中心 control center 管理软件 将没有比这个更加遗憾的事情了 正文 现在我们来
  • 2、ESXI安装出错

    ESXI安装错误提示 解决办法 按ALT F1健进入命令行模式 用户名为root 密码为空 然后输入 esxcli system settings advanced set o VSAN FakeSCSIReservations i 1 重
  • unity种四种光源

    unity 中的光 unity中一共有四种光源分别为 Directional light 方向光 类似太阳的日照效果 Point light 点光源 类似蜡烛 Spotlight 聚光灯 类似手电筒 Area Light 区域光 无法用作实
  • 【c++设计模式】——模板方法模式

    模板方法模式的定义 定义一个操作中的算法对象的骨架 稳定 而将一些步骤延迟到子类 定义一个虚函数 让子类去实现 template method使得子类可以不改变 复用 一个算法结构即可重定义该算法的某些步骤 在理解模板方法模式的时候 我们需