设计模式-13模板模式

lammps案例:reaxff势模拟Fe(OH)3高温反应过程 所有的reaxff模拟,如:氧化、腐蚀、热裂解、燃烧等模拟,均可采用此模拟框架,只需要更换data文件、势文件,代码中的control文件可以不写,电荷平衡文件也可以用reaxff替换。该案例主要模拟Fe(OH)3在高温下的反应过程,主要代码来自lammps自带的案例。lammps自带案例没有产物输出,故在此基础上稍加修改,增加了产物输出命令。如果需要系统学习反应势的模拟,可考虑报名培训课程。本文分享一个reaxff反应势的案例。in文件代码已经注释,以供参考。大家好,我是小马老师。 阅读详情

模板模式

介绍:
  • 模板方法模式,在一个抽象的类公开定义执行它的方法的模板,它的子类可以按需要重写方法实现,但调用将以抽象类中的定义执行
  • 简单说,模板方法模式定义了一个操作中的算法的骨架,而将一些步骤延迟到了子类中,使得子类可以不改变一个算法的结构,就可以重定义改算法的某些特定步骤
  • 模板模式属于行为型设计模式
类图:

在这里插入图片描述
template模板方法,规定了算法的大致流程,operation1,2,3可以是抽象方法也可以是实现方法,如果是抽象方法到子类中去实现即可。

案例:

使用模板方法制作豆浆流程,豆浆种类有红豆、花生。。。
在这里插入图片描述

public abstract class SoyaMilk {
    //模板方法制作算法
    protected final void make(){
        select();
        add();
        soak();
        beat();
    }

    protected void select(){
        System.out.println("第一步:选择优质黄豆");
    }

    protected abstract void add();

    protected void soak(){
        System.out.println("第三步:原料浸泡三小时");
    }

    protected void beat(){
        System.out.println("第四步:打成豆浆");
    }
}

public class RedBeanSoyaMilk extends SoyaMilk {
    @Override
    protected void add() {
        System.out.println("添加红豆");
    }
}

public class PeanutSoyaMilk extends SoyaMilk {
    @Override
    protected void add() {
        System.out.println("添加花生");
    }
}

public class Client {

    public static void main(String[] args) {
        //模板方法制作红豆豆浆
        SoyaMilk redBeanSoyaMilk = new RedBeanSoyaMilk();
        redBeanSoyaMilk.make();
        //模板方法制作花生豆浆
        SoyaMilk peanutSoyaMilk = new PeanutSoyaMilk();
        peanutSoyaMilk.make();
    }
}
模板方法模式中的钩子方法:
  • 在模板方法模式的父类中,我们可以定义一个方法类,它默认不做任何事情,子类可以视情况要不要覆盖它,改方法称为“钩子”。
public abstract class SoyaMilk {
    //模板方法制作算法
    protected final void make(){
        select();
        if(customerWantCondiments()){
            add();
        }
        soak();
        beat();
    }

    protected void select(){
        System.out.println("第一步:选择优质黄豆");
    }

    protected abstract void add();

    protected void soak(){
        System.out.println("第三步:原料浸泡三小时");
    }

    protected void beat(){
        System.out.println("第四步:打成豆浆");
    }
    //钩子方法
    boolean customerWantCondiments(){
        return true;
    }
}

public class PureSoyaMilk extends SoyaMilk {
    @Override
    protected void add() {

    }

    @Override
    boolean customerWantCondiments() {
        return false;
    }
}

public class Client {

    public static void main(String[] args) {
        //模板方法制作红豆豆浆
        SoyaMilk redBeanSoyaMilk = new RedBeanSoyaMilk();
        redBeanSoyaMilk.make();
        //模板方法制作花生豆浆
        SoyaMilk peanutSoyaMilk = new PeanutSoyaMilk();
        peanutSoyaMilk.make();

        SoyaMilk pureSoyaMilk = new PureSoyaMilk();
        pureSoyaMilk.make();
    }
}
模板方法模式注意事项和细节:
  • 基本思想:算法只存在于一个地方,也就是父类中,容易修改。需要修改算法时只要修改父类的模板方法或者实现的某些步骤,子类就会继承这些修改
  • 实现了最大代码复用,父类模板方法和已实现的某些步骤会被子类继承而直接使用
  • 既统一了算法,也提供了很大的灵活性,父类模板方法确保了算法的结构保持不变,同时由子类提供部分步骤实现
  • 该模式不足之处:每一个不同的实现都需要一个子类实现,导致类的个数增加,系统庞大
  • 一般模式方法都加上final关键字,防止子类重写模板方法
  • 模板方法模式使用场景:当要完成的某个过程,该过程需要执行一系列步骤。这一系列步骤基本相同,但其个别步骤在是实现时可能不同,通常考虑模板模式处理
把审批体验做成一体化:SAP Business Workflow 里的 Secondary Method、Before Method 与 After Method 摘要:SAP Business Workflow 中,Task 的 Secondary、Before 和 After 三类方法对提升审批体验和可追溯性至关重要。Secondary Method 可自动展示辅助信息(如审批时弹出排班报表),但需注意其独立会话特性;Before Method 适合预处理和审计留痕;After Method 确保收尾动作可靠执行。三类方法按特定顺序调用,且错误不影响主流程。合理使用这些方法能减少事务码切换,增强审计能力,优化用户体验。(149字) 阅读详情

相关推荐

Spring Cloud 整合(一) CRUD

Springcloud 整合之 CRUDSpringcloud介绍功能概述为什么要选用Springcloud Springcloud介绍 功能概述 实现微服务 Spring Cloud为开发人员提供了工具,以快速构建分布式系统中的某些常见模式(例如,配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式会话,群集状态)。分布式系统的协调导致样板式样,并且使用Spring Cloud开发人员可以快速站起来实现这些样板的服务和应用程序。 为什么要选用Springcloud

Kerwin-Lin的博客 1501

13、设计模式之模板模式(Template)

设计模式之模板模式(Template)

weixin_45817985的博客 1421

Ubuntu下全面解析硬盘健康:从基础检测到性能优化

本文详细介绍了在Ubuntu系统中如何全面监测硬盘健康状态。从安装smartmontools工具、解读SMART关键属性(如重新分配扇区计数、通电时间),到进行性能基准测试(使用dd和fio),最后根据检测结果提供针对性的优化与预警方案,帮助用户有效预防数据丢失并提升硬盘可靠性。

weixin_29223603的博客 287

【Java开发】设计模式 13:模板模式

这个模板的本身并不实现这些步骤,而是提供了一些列抽象方法,让子类来实现这些抽象方法。这样做的好处是可以在不修改算法的情况下,通过不同子类的实现方法,扩展算法的行为。此外,模板模式还可以用来遵循“开闭原则”,将不同的行为封装在子类中,使得父类可以保持稳定,而子类可以灵活扩展。

尹煜的博客 702

ORB-SLAM3单目+IMU实战:从数据加载到位姿优化的完整流程解析

本文详细解析了ORB-SLAM3单目+IMU模式的完整实战流程。从EuRoC等数据集的数据格式准备、系统启动与数据流入口,到帧构建、IMU预积分、视觉-惯性联合初始化,再到基于运动模型的跟踪、局部地图优化及多线程协同,提供了从环境配置到代码解读的全面指南,并分享了参数调优与性能分析的实用调试经验。

weixin_29085151的博客 296

从DMD芯片到3D视觉革命:揭秘DLP工业投影光机的核心技术

本文深入解析了DMD芯片在DLP工业投影光机中的核心技术应用,揭示了其如何通过3D结构光技术实现微米级精度。从DMD芯片的机械设计到工业级光机的特殊优化,再到光固化3D打印和系统集成,展现了DLP技术在工业自动化和智能制造中的革命性作用。

weixin_29048775的博客 509

【设计模式】13.模板模式

定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。

橙子的博客 154

数据预处理

数据预处理 数据预处理(数据清洗)是数据挖掘过程中的重要一步,它主要包括数据清洗,数据集成,数据变换和数据规约。 在我们进行数据挖掘的过程中,大量的原始数据中存在着大量有问题的数据(脏数据)比如有缺失值的,不一致的,有异常的,大量重复的数据等。这些脏数据会严重影响到数据挖掘建模过程的执行效率,也可能会使挖掘结果产生偏差。通过数据预处理(数据清洗)可以提高数据的质量,更好的适应特定的挖掘技术及工具。...

CJW的博客 9929

设计模式【13】——模板模式(Template 模式)

在系统的设计开发过程中经常会遇到:对于某一个业务逻辑的算法实对于不同的对象中有着不同的内部细节实现,但是整体的逻辑运行框架是相同的。Template 提供了这种情况的一个实现框架。Template 模式采用继承的方式实现,其将逻辑框架放在抽象基类中,并定义好具体接口,然后在子类中实现具体运算细节。Template 模式是很简单模式,也是应用很广的模式。具体而言,Template 采用继承的方式实现算法的异构,其关键点就是将通用算法封装在抽象基类中,并将不同的算法细节放到子类中实现。

sinat_42974726的博客 550

联想开天N70z/N79Z G1d笔记本Win驱动下载

本文介绍了联想开天N70Z/N79Z G1d笔记本在Win11系统下的驱动安装方法。提供了WiFi网卡驱动(RealtekWlan)和显卡驱动(ZX C960 GPU)的详细安装步骤,包括手动更新驱动和卸载流程。驱动安装后成功支持5G WiFi连接并正确识别显卡型号。文中附有系统信息和安装效果截图,同时提供了官方驱动下载地址及备用下载链接。该指南适用于需要为联想开天N70Z/N79Z G1d笔记本安装Win11驱动的用户参考。

信创运维工程师 · 银河麒麟 & 容器实战 | 金融生产环境迁移·等保加固 | 142篇原创·17万+阅读 3865

【小白CV教程】YOLOv5+Deepsort实现车辆行人的检测、追踪和计数

【小白CV教程】YOLOv5+Deepsort实现车辆行人的检测、追踪和计数本文禁止转载!项目简介:YOLOv5检测器:DeepSort追踪器:运行demo:训练自己的模型:调用接口:创建检测器:调用检测接口: 本文禁止转载! 项目简介: 使用YOLOv5+Deepsort实现车辆行人追踪和计数,代码封装成一个Detector类,更容易嵌入到自己的项目中。 代码地址(欢迎star): https://github.com/Sharpiless/Yolov5-deepsort-inference 最终效果:

梁瑛平的博客 5万+

设计模式(13)——模板模式

在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。 实际上这种模式就是向你介绍了为什么要使用抽象类。 class Program { static void Main(string[] args) { Camera one = new CameraOne(...

小书童的博客 184

杰理外挂flash使用教程(四):制作fat32文件系统格式的资源文件

本文档提供了FAT文件系统镜像生成与资源打包的完整指南,包含两种实现方案:推荐的WSL/Ubuntu环境方案和Windows原生方案。详细说明了从创建空白镜像、格式化、资源文件复制到最终打包为设备可用的res.bin文件的完整流程,并对比了FAT32与FAT16的特性差异。文档还包含关键文件说明、使用注意事项和典型应用场景,适用于嵌入式系统开发、固件升级等场景。

qq_42014563的博客 1339

设计模式——(13)模板模式

1、定义 定义一个模板结构,将具体内容延迟到子类去实现。 2、主要作用 在不改变模板结构的前提下在子类中重新定义模板中的内容。 3、解决的问题 提高代码复用性 将相同部分的代码放在抽象的父类中,而将不同的代码放入不同的子类中 实现了反向控制 通过一个父类调用其子类的操作,通过对子类的具体实现扩展不同的行为,实现了反向控制 & 符合“开闭原则” 4、UML类图 AbstractClass:抽象类。用来定义算法骨架和原语操作,具体的子类可以通过重定义这些原语操作来实

DF10f-0001A 158

VB摄像头监控

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

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

JavaScript 23 种设计模式之 13 模板方法模式

模版方法是对封装的一种改造,定义一个抽象类,公共的业务实现放在父类中,需要拓展或者变化的部分放到子类中去完成(即把变化的逻辑增加到子类中,而不改动父类)。最后直接调用模板方法即可。

杏子 457

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

设计模式(13):模板方法模式

实现一个功能时,整体步骤很固定,但是,某些部分易变。易变部分可以抽象出来,供子类实现。

qq_25432245的博客 997

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【设计模式】13、template 模板模式

如果是一套标准流程, 但有多种实现, 可以用 template 模板模式. 例如, 如果要开发一个数据挖掘程序, 支持输入 word, csv, pdf. 他们其实是相同的流程(如打开文件, 读取数据, 转换数据, 输出数据). 因为每种类别的流程相同, 所以每种类别的实现有很多重复代码. 为了消除这些重复代码, 可以定义基类, 实现通用的逻辑, 如果有个性化的逻辑再覆盖.

呆呆的猫的博客 617

设计模式【13】-- 模板模式怎么弄?

开局还是那种图,各位客官往下看… 张无忌学太极拳,忘记了所有招式,打倒了"玄冥二老",所谓"心中无招"。设计模式可谓招数,如果先学通了各种模式,又忘掉了所有模式而随心所欲,可谓OO之最高境界。 模板模式是什么? 模板模式,同样是一种行为型模式,也就是关于对象做什么或者怎么做的设计模式。模板模式的本质需要定义操作中的算法的框架,但是有一些步骤,又不需要具体的实现,而是不同的子类各自实现。子类不能修改流程框架,但是部分的步骤可以做定制化的实现。 主要要解决一个问题:一些通用的方法,但是每一个子类却都重新写.

秦怀杂货店 421

Java23种设计模式——13.行为型模式之模板方法模式

Java中除去有设计原则之外,还有23中设计模式。 这些模式都是前辈们一点一点积累下来,一直在改进,一直在优化的,而这些设计模式可以解决一些特定的问题。 并且在这些模式中,可以说是将语言的使用体现的淋漓尽致。 那我们今天要学习 行为型模式中的模板方法模式! 模板方法模式 先百度百科看一下什么叫模板方法模式 我们可以通过百科中给的信息了解一些东西,那就是模板模式是定义了一个算法步骤,然后子类可以为其中一个或者多个步骤提供实现,这样子类可以不改变架构算法的同时,从新定义了一些算法。...

胖子胖子大胖子的博客 1225

Python设计模式详解之13 —— 模板方法模式

Template Method 设计模式是一种行为型设计模式,用于定义一个操作的骨架,将某些步骤延迟到子类中实现,从而允许子类在不改变整体算法结构的情况下重新定义某些步骤。 在 Python 中,Template Method 模式通常使用基类的方法来定义通用算法框架,并通过子类覆盖特定步骤实现具体逻辑。

拾工 901

设计模式(13)——模板方法模式

目录模板方法模式模板方法模式解决豆浆制作问题模板方法模式的钩子方法模板方法模式在Spring框架应用的源码分析模板方法模式的注意事项和细节 豆浆制作问题 编写制作豆浆的程序,说明如下: 1)制作豆浆的流程 选材—>添加配料—>浸泡—>放到豆浆机打碎 2)通过添加不同的配料,可以制作出不同口味的豆浆 3)选材、浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的 4...

minge0001的博客 612

设计模式13:模板方法

模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的步骤。 UML图: 模板方法和其他设计模式的联系: 策略模式和模板方法都是封装算法,策略用的是组合,模板用的是继承; 工厂方法是模板方法的一种特殊版本。

瀚海一叶 733

经典的设计模式13——模板方法模式

对每个不同的实现都需要定义一个子类,这会导致类的个数增加,系统更加庞大,设计也更加抽象。父类中的抽象方法由子类实现,子类执行的结果会影响父类的结果,这导致一种反向的控制结构,提高了代码阅读的难度。实现了反向控制,通过一个父类调用其子类的操作,通过对子类的具体实现扩展不同的行为,实现了反向控制,并符合开闭原则。算法的整体步骤固定,但其中个别部分易变时,这时候可以使用模板方法模式,将容易变的部分抽象出来,供子类实现。:实现代码复用,将相同的部分的代码放在抽象的父类中,而将不同的代码放入不同的子类中。

weixin_63967970的博客 1418

设计模式(13) - 行为型模式之 - 模板模式

1. 什么是模板模式? 1.1 什么是模板? 模板,就是方案的固定格式,一般都要遵循这么个步骤去干。比如你请假,你需要 填写请假条,领导1签字、领导2签字,这么三个步骤。这个就叫模板,就是这么一个固定的流程。具体你请假条写的啥,这个不关心。 1.2 什么是模板模式 在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。(这句话来自菜鸟教程) 说白了:我感觉,

immort.L 的博客 163

设计模式13:模板方法模式

模板方法 概念:定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构即可重定义该算法的某些特定步骤 本质:分离算法,选择实现。即处理步骤父类中定义好,具体实现延迟到子类中定义 其实这个蛮好懂啦,设想一下,当你和某个老哥一起去银行办理业务,你办理贷款,他办理存款业务,一般来说,你们去了的第一件事情都是排队,轮到你们了你们再去办理各自要办理的业务,办理好后就离...

qq_37410328的博客 221

设计模式之13--模板模式

在面向对象的分析和实现设计中,经常会遇到这样一种情况,对于某一个业务逻辑(算法实现),在不同的对象中有不同的细节实现,但是逻辑(算法)的框架是相同的。Template模式提供了这种情况的一个实现框架。 UML图: ![这里写图片描述](http://img.blog.youkuaiyun.com/20160914195528277)

hjml69351的博客 210
上一篇: 设计模式-11享元模式
下一篇: 设计模式-14命令模式
胖柯G
博客等级 码龄10年 453粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值