GOF 23 设计模式 之 模版方法模式(template method)

【C++设计模式】学习笔记(2):模式分类与模版方法 Template Method Hello!ଘ(੭ˊᵕˋ)੭昵称:海轰标签:程序猿|C++选手|学生简介:因C语言结识编程,随后转入计算机专业,获得过国家奖学金,有幸在竞赛中拿过一些国奖、省奖…已保研学习经验:扎实基础 + 多做笔记 + 多敲代码 + 多思考 + 学好英语!唯有努力💪本文仅记录自己感兴趣的内容定义一个操作中的算法的骨架 (稳定),而将一些步骤延迟(变化)到子类中。 阅读详情

场景:

  • 客户到银行办理业务:
    1. 取号排队
    2. 办理具体业务(多种业务)
    3. 给银行工作人员评分

模版方法模式介绍:

  • 模版方法模式是编程中经常使用的模式。它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤。

核心:

  • 处理某个流程的代码都已经具备,但是其中某个节点的代码暂时不能确定。因此,我们采用工厂方法模式,将这个节点的代码实现转移给子类完成。即:处理步骤父类中定义好,具体实现延迟到子类中定义

什么时候用到模版方法模式:

  • 实现一个算法时,整体步骤很关键。但是,某些部分易变。易变部分可以抽象出来,供子类实现

开发中的常见场景

  • 非常频繁。各个框架、类库中都有它的影子。比如常见的有:
    • 数据库访问的封装
    • Junit单元测试
    • servlet中关于doGet/doPost方法调用
    • Hibernate中模版程序
    • spring中JDBCTemplate、HibernateTemplate等。

代码

  • BankTemplateMethod
package com.coderbean.templateMethod;

/**
 * Created by Chang on 15/10/4.
 */
public abstract class BankTemplateMethod {
    private void takeNumber(){
        System.out.println("取号排队");
    }

    public abstract void transact(); //办理具体业务  //钩子方法

    private void evaluate(){
        System.out.println("反馈评分");
    }

    public final void process(){    //模版方法
        this.takeNumber();

        this.transact();

        this.evaluate();
    }
}
  • Client
package com.coderbean.templateMethod;

/**
 * Created by Chang on 15/10/4.
 */
public class Client {
    public static void main(String[] args) {
        BankTemplateMethod bankTemplateMethod = new DrawMoney();
        bankTemplateMethod.process();
        BankTemplateMethod btm3 = new BankTemplateMethod() {
            @Override
            public void transact() {
                System.out.println("我要取款");
            }
        };
        btm3.process();
    }
}

class DrawMoney  extends BankTemplateMethod {
    @Override
    public void transact() {
        System.out.println("我要取款呢");
    }
}
C++设计模式_03_模板方法Template Method 定义一个操作中的算法的骨架(对应第二种方法的run函数) (稳定),而将一些步骤延迟(延迟一般代表定义一个虚函数,让子类去实现虚函数,也就是支持子类来变化)(变化)到子类中。Template Method使得子类可以不改变(复用)一个算法的结构,即可重定义(override 重写)该算法的某些特定步骤。—《设计模式》GoF可以参考方法二中的代码进行映射理解的。 阅读详情

相关推荐

AMBA VIP基础使用方式(AXI)

AXI环境配置 1)基础配置 作为master或者slave使用时,对应的is_active = 1 只作为i监测(monitor)使用时,对应slave_cfg的is_active = 0(对应端口连接也有所区别) class smu_axi_cfg extends svt_axi_system_configuration; `uvm_object_utils(smu_aix_cfg) function new(string name="smu_axi_cfg); super.new(n..

qq_37573794的博客 7984

GOF23--模板方法模式(template method)

使用场景: 实现一个算法,整体结构很固定,但对某些特定的功能是易变的,将特定的功能抽象出来,供子类实现。(子类继承父类时,必须要实现父类的抽象方法) 定义模板方法: public abstract class BankTemplateMethod { //具体方法 public void takeNumber(){ System.out.println("取号排队"); } p...

休对故人思故国,且将新火试新茶。诗酒趁年华 183

浙政钉H5应用上架实战:从环境配置到发布避坑指南

本文详细解析浙政钉H5应用上架全流程,从环境配置到发布避坑指南。重点介绍Vue 2.6 + Node 14.21.3的稳定开发环境搭建、项目结构规范及常见报错解决方案,帮助开发者高效完成浙政钉H5应用上架流程。

weixin_27943395的博客 285

GOF设计模式-模板方法模式

模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。 简单的说,就是把公用的一些东西放到父类,留下钩子函数,让子类去实现自己独特的地方。 Refit:抽象父类,封装了一些公用方法 HomeCar:子类,只需要实现自己

小布的世界 426

YOLO模型使用jupyterlab的方式进行预测/推理(示例)

首先相信很多使用过python的人都或多或少地了解过这个应用。是一个开源Web应用程序,可让用户创建和共享包含实时代码、公式、可视化和叙述文本的文档。用途包括:数据清理和转换、数值模拟、统计建模、等等。而Jupyter Lab则是Jupyter的下一代笔记本界面。是一个基于Web的交互式开发环境,用于Jupyter notebook、代码和数据。非常灵活,可支持数据科学、科学计算和机器学习领域的广泛工作。是可扩展和模块化的,其可编写插件来添加新组件并与现有组件相集成。

ocean00008899的博客 902

5、卡尔ibration中Denavit - Hartenberg与Hayati约定的转换

本文详细介绍了机器人运动学中Denavit-Hartenberg(DH)参数与Hayati参数的定义、适用场景及其相互转换方法。重点分析了两种参数在描述关节坐标系变换时的差异,特别是在处理平行或接近平行关节轴时的稳定性问题,并给出了从DH到Hayati及反向转换的具体数学公式与流程图。通过参数转换,可在不改变运动学模型的前提下提升建模精度与计算鲁棒性,适用于机器人标定与运动学分析等应用场景。

h0i1j2k3l的博客 121

【行为型模式】模板方法模式(template method)之23种java设计模式

BankTemplateMethod抽象类 public abstract class BankTemplateMethod { //具体方法 public void takeNumber(){ System.out.println("取号排队"); } public abstract void transact(); //办理具体的业务 //钩子方法 public v

删去昨天的专栏 806

基于知识图谱的时空事件关联推理能力培养

随着信息技术的飞速发展,大量的时空事件数据被产生和收集,如交通流量数据、气象观测数据、社交媒体上的地理定位信息等。这些数据蕴含着丰富的知识和规律,但要从中提取有价值的信息并非易事。基于知识图谱的时空事件关联推理旨在通过构建知识图谱,将时空事件数据进行整合和关联,从而实现对事件之间潜在关系的挖掘和推理。本文的目的是系统地介绍基于知识图谱的时空事件关联推理能力的培养方法,包括核心概念、算法原理、数学模型、实际应用等方面。

操作系统内核探秘的博客 750

Java 中的 23 种设计模式详解

项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

微笑听雨 7万+

PCL 提取两片点云的非重叠部分【2025最新版】

PCL 提取两片点云的非重叠部分。博客长期更新,本文最近一次更新时间为:2025年9月1日。

点云侠的博客 36万+

从零开始学 AUTOSAR:深入浅出 SAE J1939 诊断通信管理器(J1939Dcm)深度完整版

SAE J1939 是美国汽车工程师学会制定的重型车辆 CAN 总线通信标准,覆盖卡车、客车、工程机械、农机、船舶等,是商用车领域的 “通用语言”。基于CAN 2.0B 扩展帧(29 位 ID)(车规主流)PGN(参数组号)+ SPN(可疑参数号)核心标准:J1939-21:数据链路层(CAN 帧格式、地址声明)J1939-71:应用层(普通信号、报文)诊断层(核心!J1939Dcm 依据)J1939-81:网络管理(地址管理、节点检测)

getusushu的博客 113

【GeekBand】C++设计模式笔记3_Template Method_模板方法

【GeekBand】C++设计模式笔记3_Template Method

qq_38154295的博客 1148

配置 SAP Web Dispatcher 的实战指南:打通 SAP Fiori、SAP Gateway 与前端系统的关键一跳

SAP Web Dispatcher 在 Fiori 架构中扮演关键角色,作为统一入口处理 HTTPS 请求、实现安全代理和流量分发。它将分散在不同系统的访问路径统一收口,解决浏览器同源策略限制,集中管理 HTTPS 终止和客户端信息传递。典型配置中,Web Dispatcher 监听 443 端口,根据路径将 OData 请求转发至 Gateway 系统,静态资源请求送至前端服务器。SSL 相关配置(如 PSE 文件)确保安全通信,而路由规则(wdisp/system_xx)决定请求转发目标。实施时需注意

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 101

3 设计模式_模板方法(Template Method)

GOF-23 模式分类

asladfa的博客 241

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Java 23 种设计模式:从踩坑到精通 —— 开篇及系列介绍

摘要:本文是《Java 23种设计模式:从踩坑到精通》系列的总入口与导航页。文章梳理了设计模式的起源与三大分类,结合SOLID六大原则,详解为什么2026年设计模式依然重要。提供25篇完整目录、面试高频Top10速记、场景速查索引、易混模式对比表及分级阅读路线,可作为长期收藏的设计模式学习手册。

折哥|智能物流与Java实战,副高数据库工程师。深耕出版社物流WMS/OMS(线体/立库/VGA),也分享Java进阶与OMS电商对接。Oracle→PG实战派。相信沉淀可迁移能力,分享通用技术,不藏不虚。 3578

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

GOF23设计模式-行为型模式7-模板方法模式(Template Method)

模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某项特定步骤。

Tumbler 227

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

设计模式笔记—1_TemplateMethod

文章目录GOF-23模式分类从目的看从范围看从封装变化角度对模式分类组件协作单一职责对象创建对象性能接口隔离状态变化数据结构行为变化领域问题重构获得模式 Refactoring to Patterns重构关键技法组件协作模式Template Method动机定义代码对比结构化软件设计流程Library开发库template1_lib.cppApplication应用程序开发template1_ap...

Felix_hyfy的博客 283

复习:GoF的23种设计模式之Template Method模式(行为型)

Template Method模式 (模型) 我们先介绍什么是模板 就如我们打开优快云的每一个页面,都有一个已备案提醒的尾标,每一个页面都有,那么是不是每个页面都去添加相同的代码呢? 答:不是的,我们先写一个模板,此模板就具有尾标,我们每个页面都是借助这个母模板,那么我们就不需要手动的去添加了。 那什么是 Template Method(模型)模式 答:在父类中定义处理流程的框架...

yingqi的博客 228

23种设计模式通俗理解

23种设计模式通俗理解1、根据目的来分2、根据作用范围来分3、GoF的23种设计模式的功能1、FACTORY 工厂方法2、BUILDER建造者模式3、FACTORY METHOD抽象工厂4、PROTOTYPE 原型模式5、SINGLETON 单态模式6、ADAPTER 适配器模式7、BRIDGE 桥梁模式8、COMPOSITE合成模式9、DECORATOR装饰模式10、FACADE门面模式11、FLYWEIGHT享元模式12、PROXY代理模式13、CHAIN OF RESPONSIBLEITY责任链模式1

锋声的博客 414

【C++ 设计模式】面向对象设计原则 & Template Method 模式 & Strategy 策略模式

•从概念层面讲,对象是某种拥有责任的抽象。

2501_90252618的博客 451

学习设计模式,你需要这样一份书单!

​ ​ Head First设计模式 《O'Reilly:Head First设计模式(中文版)》趋近完美,因为它在提供专业知识的同时,仍然具有相当高的可读性。 本书共有14章,每章都介绍了几个设计模式,完整地涵盖了四人组版本全部23个设计模式。第1章至第11章陆续介绍了设计模式:Strategy、Observer、Decorator、Abstract Factory、Factory Method、Singleton、Command、Adapter、Facade、TemplatMethod、Iter

程序员书单 829

【C++ 设计模式】面向对象设计原则 & Template Method 模式 & Strategy 策略模式

理解隔离变化• 从宏观层面来看,面向对象的构建方式更能适应软件的变化, 能将变化所带来的影响减为最小各司其职• 从微观层面来看,面向对象的方式更强调各个类的“责任”• 由于需求变化导致的新增类型不应该影响原来类型的实现—— 是所谓各负其责对象是什么?• 从语言实现层面来看,对象封装了代码和数据。• 从规格层面讲,对象是一系列可被使用的公共接口。• 从概念层面讲,对象是某种拥有责任的抽象。

Remember who you are! 1013

梳理你的思路(从OOP到架构设计)_介绍GoF设计模式

GoF的Template Method模式。GoF的Factory Method模式。GoF的Composite模式。GoF的Observer模式。接下来将介绍下面几种模式。

soarfeng的专栏 714

追MM“23式”—— GOF 23种设计模式

追MM“23式” —— GOF 23种设计模式创建型模式    1、FACTORY    2、BUILDER    3、FACTORY METHOD    4、PROTOTYPE    5、SINGLETON结构型模式    6、ADAPTER    7、BRIDGE    8、COMPOSITE    9、DECORATOR    10、FAÇADE    11、FLYWEIGHT    12、

田海立@优快云 3365

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

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

dcpvpf6917的博客 361

设计模式C++

一、“组件协作”模式:框架与应用程序的划分 “组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式。 典型模式 • Template Method • Observer / Event • Strategy 1、Template methon 模式定义: 定义一个操作中的算法的骨架 (稳定),而将一些步骤延迟(变化)到子类中。 Template Method使得子类可以不改变(复用)一个算法的结构即可重定义(override 重写)该算法的某些特定步骤。

Jan___的博客 338
上一篇: GOF 23 设计模式之 解释器模式(Interpreter)与访问者模式(Visitor)
下一篇: GOF 23 设计模式之 状态模式
coderbean
博客等级 码龄11年 12粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值