黄石网站建设上海 网站建设

四川鑫兆亿物资回收有限公司 2026/09/09 18:53:13

模板方法模式(Template Method)

模板方法模式将算法流程与算法具体实现相分离的结构.
首先, 定义一个抽象类, 抽象类中有一个不可重写的final方法, 这个方法中封装核心的算法流程, 但这个流程中只有方法调用, 没有具体实现.
具体的方法实现由子类完成, 一些方法是抽象方法, 子类必须实现, 另一些方法则是钩子方法, 子类选择性实现.
代码示例:

// 模板方法类, 只定义核心逻辑, 提供算法框架, 不进行具体实现abstractclassHero{// 这个createHero方法中定义固定的逻辑, 所有子类都遵循这里的顺序// 有些方法子类必须实现, 也有部分钩子方法子类可选择性实现publicfinalvoidcreateHero(){try{System.out.print("身形: ");createBody();System.out.print("肌肉: ");if(createMuscles()){System.out.println(" 身形健硕, 极其勇猛");}else{System.out.println("无");}System.out.print("武器: ");if(createWeapon()){System.out.println(" 真理面前, 众生平等");}else{System.out.println("没有武器");}System.out.print("技能: ");createSkill();System.out.print("头戴: ");createHat();System.out.print("名号: ");sayName();}catch(Exceptione){System.out.println("[Exception] "+e.getMessage());}}abstractvoidcreateHat();abstractvoidcreateSkill();abstractvoidcreateBody();// 钩子方法booleancreateMuscles(){returnfalse;}booleancreateWeapon(){returnfalse;}abstractvoidsayName();}classZhangFeiextendsHero{@OverridevoidcreateHat(){System.out.println("黑帅盔");}@OverridevoidcreateBody(){System.out.println("身高七尺,皮肤黝黑");}@OverridevoidcreateSkill(){System.out.println("声如洪钟, 骁勇善战");}@OverridevoidsayName(){System.out.println("燕人张飞张翼德");}@OverridebooleancreateMuscles(){System.out.println("肌肉发达, 耐力非比寻常");returntrue;}@OverridebooleancreateWeapon(){System.out.println("丈八蛇矛");returntrue;}}classLvBuextendsHero{@OverridevoidcreateHat(){System.out.println("紫金冠");}@OverridevoidcreateBody(){System.out.println("身高八尺,英俊无比");}@OverridevoidcreateSkill(){System.out.println("辕门射戟神技, 战力非凡");}@OverridevoidsayName(){System.out.println("九原吕布吕奉先");}@OverridebooleancreateMuscles(){System.out.println("肌肉结实,身材魁梧");returntrue;}@OverridebooleancreateWeapon(){System.out.println("方天画戟");returntrue;}}

调用及执行:

publicclassTemplateMethodPattern{publicstaticvoidmain(String[]args){ZhangFeizhangfei=newZhangFei();zhangfei.createHero();System.out.println("=================");LvBulvbu=newLvBu();lvbu.createHero();}}

执行结果:

身形: 身高七尺,皮肤黝黑 肌肉: 肌肉发达, 耐力非比寻常 身形健硕, 极其勇猛 武器: 丈八蛇矛 真理面前, 众生平等 技能: 声如洪钟, 骁勇善战 头戴: 黑帅盔 名号: 燕人张飞张翼德 ================= 身形: 身高八尺,英俊无比 肌肉: 肌肉结实,身材魁梧 身形健硕, 极其勇猛 武器: 方天画戟 真理面前, 众生平等 技能: 辕门射戟神技, 战力非凡 头戴: 紫金冠 名号: 九原吕布吕奉先

模板方法能够让子类只实现算法的局部功能, 而不是去实现整个算法结构, 在实际开发中有效分离算法与实现.
在思考一个算法时, 考虑有哪些共同的步骤是在各种情况中反复出现的, 把他们都分步抽出来,
然后各种情况的实现类去实现这些有差异的部分

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

网站建设入门岳阳网站建设

终极指南:3分钟掌握智能图像色彩增强技术【免费下载链接】Image-Adaptive-3DLUTLearning Image-adaptive 3D Lookup Tables for

2026/06/30 10:14:49

网站建设维护上海营销型网站建设

多平台文件传输工具Transfer:一站式解决大文件分享难题【免费下载链接】transfer🍭 集合多个API的大文件传输工具.项目地址: https://gitcode

2026/06/30 11:06:53

郑州网站建设公司网站建设公司哪个好

企业微信集成lora-scripts审批流程自动化在企业日常运营中,审批流程往往伴随着大量重复性、规则明确但又依赖人工判断的任务:市场部提交的设计稿是否符合品牌视觉规范&#

2026/06/30 12:52:33

网站建设哪家公司好湘潭网站建设

二叉树的遍历文章目录二叉树的遍历深度优先遍历(DFS)二叉树的前序遍历二叉树的中序遍历二叉树的后序遍历广度优先遍历(BFS)层序遍历二叉树是数据

2026/06/30 13:33:06

网站建设合同咸阳网站建设

深入实践 I/O、重定向、管道和过滤器在命令行操作中,I/O、重定向、管道和过滤器是非常实用的工具。它们可以帮助我们更高效地处理数据、管理文件和监控系统。下面将详细介绍这些工具的使用方法和应用场景。1

2026/06/30 11:08:54

海口网站建设咸宁网站建设

3步搭建本地智能图像检索工具的终极指南【免费下载链接】ImageSearch基于.NET8的本地硬盘千万级图库以图搜图案例Demo和图片exif信息移除小工具分享项目地址: https://gitco

2026/06/30 11:11:54

义乌网站建设咸阳网站建设

Linux 信号机制详解1. 信号的作用信号是一种非常简短的消息,可发送给一个或一组进程。通常,传递给进程的唯一信息是标识信号的编号,标准信号中没有用于传递参数、消息或其他附带信息的空间。信号主要有两

2026/06/30 10:12:19

商业网站建设北京高端网站建设

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等

2026/06/30 10:06:18

房地产网站建设网站建设学习

EmotiVoice语音风格迁移技术实践:跨语种情感复现在虚拟主播用中文激情解说世界杯的同时,还能无缝切换成英文、日文甚至阿拉伯语,且语气中的兴奋感毫无打折—

2026/06/30 11:35:56