设计模式(7)模板模式--行为型

23 种设计模式详解(全23种) 设计模式 阅读详情

定义

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

角色

抽象类(AbstractClass)

实现了模板方法,定义了算法的骨架。

具体类(ConcreteClass)

实现抽象类中的抽象方法,已完成完整的算法。

类图

这里写图片描述

示例

模板方法模式算是比较好理解的一种模式。简单示例如下:

public abstract class Template {

    public void method() {
        step1();
        step2();
        step3();
    }

    public abstract void step1();

    public void step2() {
        System.out.println("this is the second step.");
    }

    public abstract void step3();

}
public class TemplateA extends Template{
    public void step1(){
        System.out.println("this is the templateA step1.");
    }
    public void step3(){
        System.out.println("this is the templateA step3");
    }
}
public class TemplateB extends Template {
    public void step1(){
        System.out.println("this is the templateB step1");
    }
    public void step3(){
        System.out.println("this is the templateB step3");
    }
}
public class Client {
    public static void main(String[] args){
        Template template;
        template= new TemplateA();
        template.method();
        template = new TemplateB();
        template.method();

    }
}

钩子(hook)

在模板模式中,存在一个空实现的方法,我们称这种方法为”hook”。子类可以视情况来决定是否要覆盖它。

要点

1.模板方法定义了算法的步骤,把这些步骤的实现延迟到子类
2.为我们提供了一种代码复用的重要技巧
3.抽象类可以定义具体方法、抽象方法和钩子
4.钩子是一种方法,它在抽象类中不做事,或者只做默认的事情,子类可以选择要不要去覆盖它。
5.为了防止子类改变模板方法中的算法,可以将模板方法声明为final
6.将决策权放在高层模块中,以便决定如何以及何时调用低层模块
7.策略模式和模板方法模式都封装算法,一个用组合,一个用继承
8.工厂方法是模板方法的一种特殊版本

引申

OO另类原则:别调用我们(高层组件),我们会调用你(低层组件)。

PHP设计模式23种 echo “加奶”;场景:旧系统接口适配新系统(如将 pay() 适配为 processPayment() )。场景:流程固定但步骤可变(如做菜:备料→烹饪→装盘,烹饪步骤子类实现)。核心:在不修改元素类的前提下,为元素添加新操作(分离数据结构与操作)。场景:多维度变化(如形状+颜色:圆形/方形 与 红/蓝 独立扩展)。场景:封装多个子系统(如电商下单:调用库存、支付、物流子系统)。场景:对复杂对象结构(如树形)进行多种不同操作(统计、打印)。场景:创建多部件对象(如电脑:CPU、内存、硬盘分步组装)。 阅读详情

相关推荐

23种设计模式,一次性讲明白

设计模式其实就是前辈们写代码踩了无数坑,总结出来的代码编写最佳实践,专门用来解决特定场景下的代码复用、解耦、扩展性问题。可以分为创建型模式、结构型模式、行为型模式三类。

博客 623

设计模式-行为型设计模式-7.模板者模式(php)

Design Pattern For PHP 设计模式类型 行为型设计模式 设计模式名称 模版模式 模式定义 模版模式(Template Pattern)属于行为型模式,在模版模式中,通过抽象类定义一个操作的算法骨架,而将具体的算法步骤延迟到子类中实现。模版方法可以使子类不改变算法结构的情况下重新定义具体的算法步骤。 UML 1、抽象算法角色 定义了算法的骨架和结构,并且对客户端开发统一调用接口 2、具体算法角色 实现了抽象角色中定义的抽象方法,不同的子类实现不同的职责 因为父类中调用了抽象的算法步骤,所以

u014354882的博客 187

深入解析AutoConfigURL劫持:从注册表权限到一键修复

本文深入解析了AutoConfigURL劫持的原理,揭示其通过篡改注册表权限锁定浏览器设置的机制。文章提供了从手动修复注册表权限到使用一键修复工具的详细解决方案,并指导用户进行DNS检查与病毒查杀,以彻底根除此类顽固劫持问题。

weixin_29229989的博客 767

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

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

Tumbler 227

vue3:实现ECharts3D地图详细示例,echarts实现3D地图map3D,vue3如何利用echarts绘制3d地图立体城市省市地区分布,可视化数据大屏3D炫酷中国地图(复制源码,开箱即用)

echarts实现中国地图记录篇之3D地图,Echarts地图之——如何让地图显示出3d感,【3d地图】vue中使用echarts geo3D,echarts实现某个市3D地图展示,vue3中使用echarts实现中国地图,3D地图图表,echarts实现3D地图——map3D,数据大屏3d地图,vue3+echarts绘制中国地图,3D地图,省、市、县,【3d地图】vue3中使用echarts geo3D,echarts实现某个市3D地图展示,ECharts3D地图(详细示例——附有具体注释),echar

✅ 精选推荐文章 3669

OpenClaw入门必装Skills(附使用场景)

很多同学安装了OpenClaw后,但却不会使用,就相当于你只是拥有了一副强大的躯干,却没有给它装上能够灵活执行任务的“手脚”和负责思考决策的“大脑插件”——Skills。没有这些核心能力的支撑,OpenClaw只是一个“空壳”,无法真正应用到实际业务场景中,更谈不上提升效率或解决复杂问题。所以,安装只是第一步,要真正让OpenClaw“活”起来,为我们所用,就需要给OpenClaw安装各种Skills,这个过程就是养虾的过程。

十二测试录 3224

23种设计模式

设计模式共23种,它们被分为三大类:创建型模式、结构型模式和行为型模式。​​​​​​。

逆风飞翔的博客 983

费雪的未来增长评估:预测颠覆性技术的影响

本文旨在提供一个系统性的框架,用于评估和预测颠覆性技术的增长轨迹。我们将重点关注费雪增长模型(Fisher-Pry Model)这一经典技术扩散理论,探讨其在现代技术预测中的应用价值。文章首先介绍费雪增长模型的基本概念,然后深入其数学原理和算法实现。随后展示实际应用案例,讨论工具资源,最后探讨未来发展趋势。每个部分都包含详细的技术实现和理论分析。费雪增长模型(Fisher-Pry Model):一种描述技术替代过程的S型增长模型,用于预测新技术取代旧技术的速率。

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 928

面向对象-23种设计模式的各自特点

软考题目口诀类模型公司模姐结构型设计模式四桥组装外箱带一、创建型模式5种(一)类模式1、工厂方法模式*(工厂模式)(*的是以前软考没考过的) Factory Method 一个类希望由它的子类来指定它创建的对象(二)对象模式1、抽象工厂模式Abstract Factory意图: 提供一个创建一...

weixin_40564837的博客 157

S7-1200 G2移植旧版本S7-1200程序的具体方法示例

S7-1200 G2移植旧版本S7-1200程序的具体方法示例

Robot_PLC_HMI_Automation 1513

美团mtgsig 1.2算法分析

mtgsig1.2的一些算法总结

记录一些web逆向的过程 3500

软件设计师-结构型与行为型设计模式全解:设计模式考点一站式通关

本文系统梳理了软考软件设计师考试中结构型(7种)和行为型(11种)设计模式的核心知识点。结构型模式通过对象组合处理类与对象的结构关系,包括适配器、桥接、组合等;行为型模式处理对象间的交互与职责分配,如观察者、策略、责任链等。文章详细解析了每种模式的定义、机制、应用场景及记忆口诀,并提供了分类体系(4种类模式+19种对象模式)和答题技巧。针对考试重点,强调高频考点和易混淆模式的区分,建议通过真题练习掌握模式匹配能力。最后指出设计模式在现代架构中的应用趋势,强调理解核心思想的重要性。

专注知识分享,希望可以帮助到需要的同行,感谢关注与支持!专注知识分享,希望可以帮助到需要的同行,感谢关注与支持! 1078

Vue3 - Element Plus 日期选择器 el-date-picker,设置 type=week 变成周选择器后,将选择周时修改为 “周一至周日“ 为一组范围(详细示例代码,新手小白秒会)

vue3,element-plus,DatePicker日期选择器,el-date-picker,周,type=week,周选择器,日期选择器week怎么拿到具体的时间范围,如何取week周选择器的value值,format如何设置,时间选择器按周选择时展示具体日期范围,vue3elementPlus日期选择器选择一周7天的数据格式怎么拿到,el-date-picker设置type等于week后怎么设置format属性,format和value-format怎么设置,范围选择器周,一周,选择一周7天时间

🏆 前端领域优质创作者 1万+

面向对象设计的设计模式(三):行为型模式(附 Demo & UML类图)

本篇是面向对象设计系列文章的第四篇,讲解的是设计模式中的7个比较常见的行为型模式(按照本文讲解顺序排列): 模板方法模式 策略模式 责任链模式 状态模式 命令模式 观察者模式 中介者模式 一. 模板方法模式 定义 在模板模式(Template Method Pattern)中,定义一个操作中的算法的框架,而将一些步骤的执行延迟到子类中,使得子类可以在不改变算法的结构的前提下即可重新定义该算法...

weixin_34315485的博客 607

OpenCV实战之人脸美颜美型(八)——大眼(上)

从大众审美的角度来看,眼睛适当的“变大”会让人显得更加年轻。因此美型中就有一项大眼功能,其效果就是让眼睛适当变大,这章内容就围绕着大眼算法展开。

On my way 1211

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Java中23种设计模式

Java中的23种设计模式源自经典的《设计模式:可复用面向对象软件的基础》(也被称作Gang of Four,GoF)一书。这些模式可以分为三大类:创建型模式、结构型模式和行为型模式。

二哈喇子! 1661

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

二十三种常见设计模式-简介

设计模式分类 设计模式根据目的可分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式,原型模式。 结构性模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 设计模式的7大原则: 单一原则(SRP):一个类(或方法)只做一件事。 开放-封闭原则(OCP):软件实体(类、模块、函数)可以拓展,但

KevinC0211的博客 3092

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

《23种设计模式系列教程》

**一共包含创建型设计模式5种、结构型设计模式7种、行为型设计模式11种,共23种设计模式** - 1)**创建型模式:**用于描述“怎样创建对象“,它的主要特点是“将对象的创建与使用分离”。GoF 中提供了**单例、原型、工厂方法、抽象工厂、建造者**等 5 种创建型模式。 - 2)**结构型模式:**用于描述如何将类或对象按某种布局组成更大的结构,GoF 中提供了**代理、适配器、桥接、装饰、外观、享元、组合**等 7 种结构型模式。 - 3)**行为型模式:**用于描述类或对象之间怎样相互协作

緑水長流*z 1万+

最常用的7种设计模式

在工厂模式中,创建对象的代码被封装在一个工厂类中,客户端通过调用工厂类的方法来获取所需的对象,而无需直接实例化对象。这种方式使得代码更加灵活和可扩展,因为如果需要创建不同类型的对象,只需修改工厂类的实现即可,而无需修改客户端代码。该模式将对象的构建过程与其表示分离,使得相同的构建过程可以创建不同的表示,提高了代码的灵活性和可复用性。通过这种模式,子类可以在不改变算法结构的前提下,重新定义算法中的某些步骤,从而实现代码复用和算法扩展。如果不为null,则直接返回实例,避免进入同步代码块,从而提高性能。

IT_1024_的博客 908

设计模式GOF23

1.创建型模式(5): 单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式 2.结构型模式(7): 适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式 3.行为型模式(11): 模板方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式

未闻花名 249

设计模式-总

定义对象间的一对多依赖关系,当一个对象的状态改变时,其依赖者会收到通知并自动更新。策 策略模式,定义一组算法,将它们封装起来,并使它们可以互换,算法的变化不影响使用算法的客户。中 中介者模式,通过一个中介对象来封装对象之间的交互,使得对象之间不再直接相互引用,减少耦合。模 模板方法模式,定义一个算法的骨架,允许子类在不改变结构的情况下重定义某些步骤。享 享元模式,通过共享已经存在的对象,避免创建大量相似对象,减少内存占用。备 备忘录模式,在不破坏封装的前提下,保存对象的状态,以便以后恢复。

weixin_43883584的博客 567

软设(设计模式)

定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到其子类。系统开放一个接口(扩展开放),不提供修改的接口(修改关闭)提供一个创建一系列相关或相互依赖对象的接口,而无须制定它们具体的类。理解:一个工厂能生产多个不同类型的产品。作用:定义 “产品族” 的生产规范。作用:定义产品的通用行为规范。

2301_81716710的博客 457

JAVA23种设计模式

设计模式主要分三个类型:创建型、结构型和行为型。 创建型有:     一、Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点     二、Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。     三、Factory Method,工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Fac...

个人博客 118
上一篇: 设计模式(6)状态模式--行为型
下一篇: 软件开发应试人员考试试题(Java)
gycool21
博客等级 码龄17年 10粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值