Java中模板方法模式实现

模板方法模式通过父类定义算法骨架,子类实现具体步骤。抽象类Beverage中prepare()为final模板方法,规定流程顺序,包含共用的boilWater()和pourInCup(),以及需子类实现的brew()、addCondiments(),还提供可选钩子shouldAddCondiments()。Coffee和Tea继承Beverage,分别实现冲泡与调料逻辑,其中Tea覆盖钩子禁用调料。测试类TemplateMethodDemo验证咖啡与茶的制备流程。该模式封装不变逻辑,扩展可变部分,提升复用性,适用于流程固定但细节不同的场景,如框架设计或构建流水线。

java中模板方法模式实现

模板方法模式属于行为型设计模式,它在父类中定义算法的骨架,而将一些具体步骤延迟到子类中实现。这种模式让子类可以在不改变算法结构的前提下重新定义算法的某些步骤。

基本结构与角色

抽象类(Abstract Class):定义算法的模板方法,包含多个抽象方法或钩子方法,模板方法通常被声明为final,防止子类修改流程。

具体类(Concrete Class):继承抽象类,实现其中的抽象方法,完成特定逻辑。

代码示例

以下是一个制作饮品的简单例子:

定义一个抽象类 Beverage,其中模板方法 prepare() 规定了冲泡饮料的固定流程:

立即学习“Java免费学习笔记(深入)”;

abstract class Beverage {    // 模板方法,定义算法骨架    public final void prepare() {        boilWater();        brew();        pourInCup();        if (shouldAddCondiments()) { // 钩子方法控制可选步骤            addCondiments();        }    }    // 共用步骤    private void boilWater() {        System.out.println("烧开水");    }    private void pourInCup() {        System.out.println("倒入杯中");    }    // 抽象方法,由子类实现    abstract void brew();    abstract void addCondiments();    // 钩子方法,默认行为可被子类覆盖    boolean shouldAddCondiments() {        return true;    }}

两个具体实现类:

AiPPT模板广场 AiPPT模板广场

AiPPT模板广场-PPT模板-word文档模板-excel表格模板

AiPPT模板广场 147 查看详情 AiPPT模板广场

class Coffee extends Beverage {    @Override    void brew() {        System.out.println("用沸水冲泡咖啡");    }    @Override    void addCondiments() {        System.out.println("加入糖和牛奶");    }}class Tea extends Beverage {    @Override    void brew() {        System.out.println("用沸水泡茶叶");    }    @Override    void addCondiments() {        System.out.println("加入柠檬");    }    // 覆盖钩子方法,选择不加调料    @Override    boolean shouldAddCondiments() {        return false;    }}

测试调用:

public class TemplateMethodDemo {    public static void main(String[] args) {        Beverage coffee = new Coffee();        System.out.println("准备咖啡:");        coffee.prepare();        System.out.println("n准备茶:");        Beverage tea = new Tea();        tea.prepare();    }}

关键点说明

模板方法的核心在于封装不变部分,扩展可变部分。

模板方法本身通常是 final 的,避免子类篡改流程顺序。抽象方法强制子类实现特定步骤。钩子方法提供默认行为,子类可选择是否覆盖,实现流程分支控制。公共步骤在父类中实现一次即可,提高代码复用性。

适用场景

当多个子类有相似的行为流程,且存在共用代码时,使用模板方法可以消除重复。

框架设计中定义执行流程,如Spring中的JdbcTemplate。构建构建流程、数据处理流水线等固定步骤但细节不同的场景。需要控制子类扩展点,防止流程被破坏的情况。

基本上就这些,掌握好抽象类与方法的划分,就能灵活运用模板方法模式。

以上就是Java中模板方法模式实现的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/324014.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
股价飙升20% 高通推出AI芯片AI200/250:768GB内存+超低成本优势
上一篇 2026年11月2日 22:37:06
Kaspa(KAS)币是什么?为何被称为“BTC杀手”?
下一篇 2025年12月11日 19:22:29

相关推荐

  • 股价飙升20% 高通推出AI芯片AI200/250:768GB内存+超低成本优势

    股价飙升20% 高通推出AI芯片AI200/250:768GB内存+超低成本优势股价飙升20% 高通推出AI芯片AI200/250:768GB内存+超低成本优势股价飙升20% 高通推出AI芯片AI200/250:768GB内存+超低成本优势股价飙升20% 高通推出AI芯片AI200/250:768GB内存+超低成本优势

    10月27日,ai芯片市场的巨大利润空间正吸引着越来越多的半导体巨头入局。继nvidia与amd之后,高通今日正式宣布进军数据中心ai芯片领域,推出两款全新产品——ai200和ai250。 消息发布后,高通股价一度暴涨20%,突破200美元大关,尽管后续有所回落,但截至发稿仍保持约13%的涨幅,股价…

    2026年11月2日 • 用户投稿
    300
  • 如何在iPhone上快速安装DeepSeek

    如何在iPhone上快速安装DeepSeek如何在iPhone上快速安装DeepSeek如何在iPhone上快速安装DeepSeek如何在iPhone上快速安装DeepSeek

    无法直接在iphone上安装deepseek,因其未提供ios官方app。1. 可通过deepseek api自行开发ios应用,需编程基础及api文档了解,使用swift或objective-c调用功能,优点为可完全定制,缺点是开发周期长;2. 寻找已集成deepseek功能的第三方app,相对简…

    2026年11月2日 • 用户投稿
    100
  • 如何在mysql上修改基本表 alter语句修改表结构

    在mysql中使用alter table语句可以修改表结构,以适应业务需求的变化。具体操作包括:1. 添加新列:alter table employees add column email varchar(255);可以设置not null或default值。2. 修改列类型:alter table…

    2026年11月2日
    000
  • 谷歌浏览器怎么将网页完整保存为HTML文件_谷歌浏览器网页离线保存教程

    谷歌浏览器怎么将网页完整保存为HTML文件_谷歌浏览器网页离线保存教程谷歌浏览器怎么将网页完整保存为HTML文件_谷歌浏览器网页离线保存教程谷歌浏览器怎么将网页完整保存为HTML文件_谷歌浏览器网页离线保存教程谷歌浏览器怎么将网页完整保存为HTML文件_谷歌浏览器网页离线保存教程

    可通过谷歌浏览器“另存为”功能将网页保存为HTML文件,保留文本、图片、链接等元素以实现离线浏览;2. 对动态网页可使用开发者工具复制完整HTML代码并保存为本地文件;3. 还可通过安装SingleFile等扩展程序一键保存JavaScript渲染后的网页为单个HTML文件,便于长期归档与离线查看。…

    2026年11月2日 • 用户投稿
    100
  • Spring Boot应用中Consul服务发现的优化与动态配置刷新

    Spring Boot应用中Consul服务发现的优化与动态配置刷新Spring Boot应用中Consul服务发现的优化与动态配置刷新Spring Boot应用中Consul服务发现的优化与动态配置刷新Spring Boot应用中Consul服务发现的优化与动态配置刷新

    针对Spring Boot应用启动缓慢,主要耗时于Consul服务发现的问题,本文探讨了如何避免构建独立的缓存应用,转而利用Spring Cloud Consul和Spring Actuator的@RefreshScope机制实现动态配置刷新。通过这种方式,应用无需重启即可获取最新的服务信息,从而优…

    2026年11月2日 • 用户投稿
    100
  • Java构造器中数组字段初始化陷阱:理解局部变量与成员变量的区分

    Java构造器中数组字段初始化陷阱:理解局部变量与成员变量的区分Java构造器中数组字段初始化陷阱:理解局部变量与成员变量的区分Java构造器中数组字段初始化陷阱:理解局部变量与成员变量的区分Java构造器中数组字段初始化陷阱:理解局部变量与成员变量的区分

    本文深入探讨Java构造器中成员变量(如数组)初始化时常遇到的null值或“找不到符号”错误。核心问题在于构造器内部局部变量与同名成员变量的混淆。通过区分二者并正确使用this关键字,可以确保成员变量被正确赋值,避免意外行为,从而实现预期的对象状态初始化。 Java构造器中成员变量初始化问题解析 在…

    2026年11月2日 • 用户投稿
    000
  • 原《光环》设计师批评重制版:破坏了原有设计

    随着《光环:战斗进化》的重制作品《光环:战役进化》正式公布,游戏在设计层面的多项调整引发了玩家与业内人士的广泛讨论。 曾担任原版《光环:战斗进化》关卡设计的 Jaime Griesemer 在社交媒体 X 上公开表达了他对此次重制的不满,尤其针对近25年前由他亲自设计的关卡改动提出了强烈批评。 他在…

    2026年11月2日
    000
  • 马斯克推出 AI 编辑的在线百科全书 Grokipedia

    马斯克推出 AI 编辑的在线百科全书 Grokipedia马斯克推出 AI 编辑的在线百科全书 Grokipedia马斯克推出 AI 编辑的在线百科全书 Grokipedia马斯克推出 AI 编辑的在线百科全书 Grokipedia

    据美国《华盛顿邮报》和“商业内幕”网站消息,美国亿万富翁埃隆·马斯克于当地时间27日发布了由人工智能驱动的在线百科平台Grokipedia。此前他曾表示,这一新平台将作为比维基百科“偏见更少”的替代选择。 报道指出,Grokipedia在当天低调上线,未进行任何公开宣传或官方声明。网站界面极为简朴,…

    2026年11月2日 • 用户投稿
    100
  • 笔记本电脑外接显示器:接口与设置详解

    笔记本电脑外接显示器:接口与设置详解笔记本电脑外接显示器:接口与设置详解笔记本电脑外接显示器:接口与设置详解笔记本电脑外接显示器:接口与设置详解

    正确选择接口并设置可实现笔记本外接显示器,提升效率与视觉体验。首先确认设备支持的接口类型:HDMI兼容性强,支持音视频传输和4K@60Hz;DisplayPort适合高性能需求,支持高刷新率、高分辨率及多屏串联;USB-C/Thunderbolt功能全面,可传输视频、数据并供电,适合一线连接与充电;…

    2026年11月2日 • 用户投稿
    200
  • vivo浏览器如何禁止图片加载_vivo浏览器设置禁止加载网页图片的方法

    vivo浏览器如何禁止图片加载_vivo浏览器设置禁止加载网页图片的方法vivo浏览器如何禁止图片加载_vivo浏览器设置禁止加载网页图片的方法vivo浏览器如何禁止图片加载_vivo浏览器设置禁止加载网页图片的方法vivo浏览器如何禁止图片加载_vivo浏览器设置禁止加载网页图片的方法

    首先在vivo浏览器中开启“无图模式”可禁止图片加载以节省流量,具体操作为:打开浏览器→点击三点菜单→进入设置→选择节省流量→启用无图模式;其次可通过新建隐私标签页间接阻止图片自动加载;最后可在高级设置中调整图片加载选项,如设置为仅Wi-Fi下加载或从不加载,从而根据网络环境优化浏览体验。 如果您在…

    2026年11月2日 • 用户投稿
    000
  • 第一款性能Ultra旗舰!一加15首销:3999元起

    第一款性能Ultra旗舰!一加15首销:3999元起第一款性能Ultra旗舰!一加15首销:3999元起第一款性能Ultra旗舰!一加15首销:3999元起第一款性能Ultra旗舰!一加15首销:3999元起

    10月28日,一加15正式开售,起售价为3999元。 一加官方表示,一加15在性能、散热、触控与网络等多个维度实现了全面突破,堪称业内首款真正意义上的“性能Ultra”旗舰机型,标志着智能手机正式迈入165Hz超高帧游戏时代。 外观设计方面,一加15延续了标志性的“金属魔方”Deco设计语言,采用全…

    2026年11月2日 • 用户投稿
    100
  • 将图片资源正确打包到 IntelliJ IDEA 的 JAR 文件中

    本文旨在解决 IntelliJ IDEA 项目中图片资源在打包成 JAR 文件后无法正常显示的问题。通过将资源文件放置在正确的目录结构下,并使用 ClassLoader 正确读取资源,确保图片资源能够被成功打包并加载,从而解决 JAR 文件运行时的图片显示问题。 在 IntelliJ IDEA 中开…

    2026年11月2日
    200
  • AMD 承诺 MI450 GPU 将实现全面性能领先 挑战英伟达

    在最近举办的 Communicopia+ 科技峰会上,AMD 正式宣布其下一代 AI 加速 GPU——MI450 将作为一款“无需让步”的旗舰级产品亮相,目标直指英伟达在人工智能领域的主导地位。公司数据中心部门主管福里斯特 · 诺罗德(Forrest Norrod)明确指出,MI450 将成为 AM…

    2026年11月2日
    000
  • mysql数据库怎么连接 多种连接方式及常见问题解决

    连接mysql数据库可以使用jdbc、mysql connector/python和mysql2库。1.jdbc适用于java开发者,代码直观,适合初学者。2.mysql connector/python是官方提供的库,性能和稳定性好,适用于python开发者。3.mysql2库适用于node.js…

    2026年11月2日
    000
  • PHP函数中变量名局部转换:实现以下划线替换连字符的策略

    本教程探讨在PHP函数中,如何针对特定代码行局部转换变量值,例如将包含下划线的变量名转换为连字符形式,同时保持原始变量值不变。通过创建临时变量并利用字符串替换函数(如Laravel的Str::replace或原生PHP的str_replace),我们能高效、清晰地实现这种精确控制,避免全局修改,确保…

    2026年11月2日
    100
  • Laravel开发:如何使用Laravel Passport实现API身份验证?

    laravel是一个开源的php web应用程序框架,旨在帮助开发者轻松构建高效的web应用程序。laravel passport是laravel框架的一部分,它是一个实现oauth2协议的身份验证服务器,为api开发提供了强大的支持。在本文中,我们将介绍如何使用laravel passport实现…

    用户投稿 2026年11月2日
    000
  • 真我 15T 官宣,超能小直屏

    真我 15T 官宣,超能小直屏真我 15T 官宣,超能小直屏真我 15T 官宣,超能小直屏真我 15T 官宣,超能小直屏

    真我15系列定档9月16日19:00正式发布,新品预热节奏全面开启。此前传闻中的真我15T机型已获官方确认,并释放出大量核心信息。 官方将真我15T定义为“超能小直屏”,采用真我首款大R角设计,搭配极简金属Deco,外观风格颇具辨识度。新机提供三款配色:流光白采用Pro同款流光晕染工艺,背板纹理层次…

    2026年11月2日 • 用户投稿
    100
  • 微软Dynamics365怎样分析客户行为_微软Dynamics365客户行为分析教程

    微软Dynamics365怎样分析客户行为_微软Dynamics365客户行为分析教程微软Dynamics365怎样分析客户行为_微软Dynamics365客户行为分析教程微软Dynamics365怎样分析客户行为_微软Dynamics365客户行为分析教程微软Dynamics365怎样分析客户行为_微软Dynamics365客户行为分析教程

    首先启用Customer Insights模块并连接多源数据,再创建客户细分群体,利用AI预测模型分析行为,最后通过旅程地图可视化交互路径,实现精准营销与服务优化。 如果您希望深入了解客户与企业互动的方式,并基于数据优化营销和服务策略,微软Dynamics 365提供了强大的客户行为分析功能。通过集…

    2026年11月2日 • 用户投稿
    300
  • 网易邮箱pc版最新版官方网址_网易邮箱pc版平台入口地址直达首页

    网易邮箱pc版最新版官方网址_网易邮箱pc版平台入口地址直达首页网易邮箱pc版最新版官方网址_网易邮箱pc版平台入口地址直达首页网易邮箱pc版最新版官方网址_网易邮箱pc版平台入口地址直达首页网易邮箱pc版最新版官方网址_网易邮箱pc版平台入口地址直达首页

    网易邮箱pc版最新版官方网址是https://mail.163.com/,该网站支持多端同步、高效管理邮件及完善的安全防护机制。 网易邮箱pc版最新版官方网址在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来网易邮箱pc版平台入口地址直达首页,感兴趣的网友一起随小编来瞧瞧吧! https:/…

    2026年11月2日 • 用户投稿
    100
  • 权威认证!标贝科技荣获“国家专精特新小巨人”企业称号

    权威认证!标贝科技荣获“国家专精特新小巨人”企业称号权威认证!标贝科技荣获“国家专精特新小巨人”企业称号权威认证!标贝科技荣获“国家专精特新小巨人”企业称号权威认证!标贝科技荣获“国家专精特新小巨人”企业称号

    近日,青岛市民营经济发展局正式发布青岛市第七批国家级专精特新“小巨人”企业名单,标贝科技凭借在人工智能数据领域的长期深耕与技术积累,以突出的创新能力与落地实践成果成功入选。此次认定不仅是对公司在专业化、精细化、特色化和新颖化发展路径上的权威认可,也充分彰显了其在推动人工智能产业基础升级、产业链现代化…

    2026年11月2日 • 用户投稿
    000

发表回复

登录后才能评论
关注微信