最新要闻
- 手机免费在线看影片(手机m值兑换)
- 老板劝顾客别买了实在夸不下去了:女子试穿牛仔裤 腰间挤出两块肉
- 路面积水淹没车轮!郑州暴雨有多大:有些地方雨强超720 但不会持久
- 骑手捂住宝宝耳朵进KTV送餐 网友看完感慨:生活不易
- 专家建议时间类政策应鼓励男性休假:男女平等
- 聚焦世界人口日:我国多措并举保障妇女儿童健康权益
- 上半年汽车销量超1323万辆:出口突破200万,新能源占比近30%
- 对标漫威钢铁侠!DC《蓝甲虫》终极预告发布:8月18日上映
- 冰箱爆炸一死一伤 家家户户都有的冰箱为什么还会炸?
- 抢先苹果iPhone 15!荣耀Magic V2今晚发布:首次大规模用钛合金材料
- 富士康195亿美元建厂计划泡汤 印度无惧:完全不影响半导体雄心
- SSD等暴力涨价大幕将开启:存储市场回暖 部分主控芯片供不应求
- 转型升级中的镇江实践——聚焦镇江船舶海工产业高质量发展系列报道之三
- 国内油价调价窗口今晚开启:或现今年首次连涨 微调1毛
- 不只是种菜 中国人要上太空养鱼:网友期待太空水族箱
- 比亚迪元宇宙今日上线:身临其境看车 还能虚拟试驾
手机

英国房地产因利率上升陷入困境 房价正以2011年来最快速度下跌

宁夏评选出上半年10名“宁夏好人” 95后消防员因敬业奉献入选
- 英国房地产因利率上升陷入困境 房价正以2011年来最快速度下跌
- 宁夏评选出上半年10名“宁夏好人” 95后消防员因敬业奉献入选
- 离婚时共同债务应该怎么处理?
- 华为云盘古大模型3.0正式发布
- 支持自动长文生成,WPS AI发布:基于大语言模型的智能办公助手
- 《街头霸王6》全球总销量突破200万份 卡普空再次为其玩家送上礼物
家电
模板模式
(相关资料图)
模板模式的定义
其定义如下:Define the skeleton of an algorithm in an operation,deferring some steps to subclasses.Template Method lets subclasses redefine certain steps of an algorithm without changing the algorithm"s structure.(定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。)
模板模式通用类图
模板模式通用代码
抽象模板类
public abstract class AbstractClass { //基本方法 protected abstract void doSomething(); //基本方法 protected abstract void doAnything(); //模板方法 public void templateMethod(){ /* * 调用基本方法,完成相关的逻辑 */ this.doAnything(); this.doSomething(); }}
具体模板类
public class ConcreteClass1 extends AbstractClass { //实现基本方法 protected void doAnything() { //业务逻辑处理 } protected void doSomething() { //业务逻辑处理 }}public class ConcreteClass2 extends AbstractClass { //实现基本方法 protected void doAnything() { //业务逻辑处理 } protected void doSomething() { //业务逻辑处理 }}
场景类
public class Client { public static void main(String[] args) { AbstractClass class1 = new ConcreteClass1(); AbstractClass class2 = new ConcreteClass2(); //调用模板方法 class1.templateMethod(); class2.templateMethod(); }}
模板模式的优点
- 封装不变部分,扩展可变部分。把认为是不变部分的算法封装到父类实现,而可变部分的则可以通过继承来继续扩展。
- 提取公共部分代码,便于维护。
- 行为由父类控制,子类实现。基本方法是由子类实现的,因此子类可以通过扩展的方式增加相应的功能,符合开闭原则。
模板方法模式的缺点
按照我们的设计习惯,抽象类负责声明最抽象、最一般的事物属性和方法,实现类完成具体的事物属性和方法。但是模板方法模式却颠倒了,抽象类定义了部分抽象方法,由子类实现,子类执行的结果影响了父类的结果,也就是子类对父类产生了影响,这在复杂的项目中,会带来代码阅读的难度,而且也会让新手产生不适感。
模板方法模式的使用场景
● 多个子类有公有的方法,并且逻辑基本相同时。● 重要、复杂的算法,可以把核心算法设计为模板方法,周边的相关细节功能则由各个子类实现。● 重构时,模板方法模式是一个经常使用的模式,把相同的代码抽取到父类中,然后通过钩子函数(见“模板方法模式的扩展”)约束其行为。
场景示例
我现在有这么一个业务,医院每次病人看病,缴费都有这么一个大概的流程 构建订单->病人支付->系统处理支付的业务逻辑。因为支付业务是可以分多种的,比如挂号缴费,门诊缴费,构建订单和病人支付的流程都是不变的,针对不同的类型的缴费业务,缴费完成后系统需要处理不同的业务逻辑。现在可以使用模板模式编写代码。
抽象模板类
/** * 就诊模板 */public abstract class VisitProcessTemplate { /** * 构建订单 */ public void initOrder(){ System.out.println("构建订单"); } /** * 支付 */ public void orderPay(){ System.out.println("订单支付"); } /** * 处理下单之后的业务逻辑 */ public abstract void payOk(); /** * 就诊流程 */ public void visitRun(){ initOrder(); orderPay(); payOk(); }}
挂号具体模板类
public class RegisterVisitProcess extends VisitProcessTemplate{ @Override public void payOk() { System.out.println("支付成功,处理病人挂号业务"); }}
门诊缴费具体模板类
public class OutpatientVisitProcess extends VisitProcessTemplate{ @Override public void payOk() { System.out.println("支付成功,处理病人门诊缴费业务"); }}
场景类
public class Client { public static void main(String[] args) { VisitProcessTemplate visitProcessTemplate = new OutpatientVisitProcess(); VisitProcessTemplate visitProcessTemplate1 = new RegisterVisitProcess(); visitProcessTemplate.visitRun(); visitProcessTemplate1.visitRun(); }}
模板方法模式的扩展(钩子函数)
假如我现在新增了一个业务,这个业务是医院诊疗卡办理服务,这个业务是免费的,病人无需费用就可以办卡,可别的业务又需要支付,该怎么优化这段代码呢?使用钩子函数。
优化后的就诊模板
/** * 就诊模板 */public abstract class VisitProcessTemplate { /** * 构建订单 */ public void initOrder(){ System.out.println("构建订单"); } /** * 支付 */ public void orderPay(){ System.out.println("订单支付"); } /** * 处理下单之后的业务逻辑 */ public abstract void payOk(); /** * 钩子函数,默认需要支付 */ public boolean needPay(){ return true; } /** * 就诊流程 */ public void visitRun(){ initOrder(); if (needPay()){ orderPay(); } payOk(); }}
办卡具体模板类
public class CardVisitProcess extends VisitProcessTemplate{ @Override public void payOk() { System.out.println("处理病人办卡业务"); } @Override public boolean needPay() { return false; }}
关键词:
-
-
-
-
模板模式
手机免费在线看影片(手机m值兑换)
老板劝顾客别买了实在夸不下去了:女子试穿牛仔裤 腰间挤出两块肉
路面积水淹没车轮!郑州暴雨有多大:有些地方雨强超720 但不会持久
骑手捂住宝宝耳朵进KTV送餐 网友看完感慨:生活不易
专家建议时间类政策应鼓励男性休假:男女平等
聚焦世界人口日:我国多措并举保障妇女儿童健康权益
【读财报】房企6月融资:境内发债规模环比上升超三成
上半年汽车销量超1323万辆:出口突破200万,新能源占比近30%
对标漫威钢铁侠!DC《蓝甲虫》终极预告发布:8月18日上映
冰箱爆炸一死一伤 家家户户都有的冰箱为什么还会炸?
抢先苹果iPhone 15!荣耀Magic V2今晚发布:首次大规模用钛合金材料
富士康195亿美元建厂计划泡汤 印度无惧:完全不影响半导体雄心
SSD等暴力涨价大幕将开启:存储市场回暖 部分主控芯片供不应求
选读SQL经典实例笔记05_日期运算(下)
转型升级中的镇江实践——聚焦镇江船舶海工产业高质量发展系列报道之三
国内油价调价窗口今晚开启:或现今年首次连涨 微调1毛
不只是种菜 中国人要上太空养鱼:网友期待太空水族箱
shell脚本-批量主机执行命令(expect)
比亚迪元宇宙今日上线:身临其境看车 还能虚拟试驾
奥迪新能源车销量拉胯已沦为“杂牌” 买中国技术能行吗?
郑州暴雨深夜上热搜!官方发布红色预警:局地降水量达90.2毫米
只用一个充电口 特斯拉把车企们从美国政府那儿“拐”过来了
夏天喝什么最解渴?不是冰可乐也不是水 你肯定想不到!
钧达股份(002865):7月11日北向资金增持5.22万股
追甜剧、吃冰饮,抖音电商《夏天的风》打开品牌植入新思路
shell脚本-监控多台服务器磁盘利用率
单丹(单丹峰秦腔即兴曲)
Intel酷睿Ultra艰难冲击5GHz:核显反杀AMD!
女生回应寄顺丰快递致毕设损坏:自己做了一年 赔付952元
手机没电也能支付!数字人民币SIM卡硬钱包来了
爷爷奶奶们 别再不舍得开空调了!已有老人热到抽搐进ICU
余承东口中“1000万以内最好的SUV” 问界M9路跑视频曝光:调头超丝滑
Closest Cow Wins S 最近的奶牛获胜
代码审计工具Fortify基本使用
【快新】男高恋爱日常
国内自动驾驶芯片创业不易:卖一颗亏23万
AMD无核显锐龙i5-7500F中国特供!一优势让Intel望尘莫及
苹果客服回应FaceTime诈骗:可能是用户苹果ID泄露
电视仍持续上传 爱奇艺客户端将服务端压力转移到客户端
journalctl 清理journal日志
Docker学习路线2:底层技术
日本核污水排海 韩国居民疯狂抢购食盐 网友:今夕是何年
起诉京东方专利侵权后:三星决定将向韩企免费授权
固态硬盘价格为何会暴跌?背后原因揭开
奥迪向中国车企低头 只有比亚迪出手才能救?
支付宝4个超实用功能 3个有关你的钱 赶紧用起来
动脉血管硬化吃什么好呢
天合光能:拟出资43亿元投建13GW单晶拉棒及配套项目
上映6天 王宝强电影《八角笼中》票房破10亿:曾让周星驰看哭
高速路错过出口竟在大车前急刹被撞 女子笑称:意识到了自己的错误
《生化危机4》艾达王等身人偶展示:预售价最高18643元
奥迪被曝向中国车企购买电动平台技术 官方回应
夏日步行、骑行神器!高德地图升级“防晒导航”:可推荐阴凉路段
麻江县推行柔性执法 助推城镇精致管理行动
人民银行:6月份社会融资规模增量为4.22万亿元
全国头伏中暑指数地图出炉 12省份极易出现中暑天气
人民银行:6月份社会融资规模增量为4.22万亿元
中颖电子:上半年净利同比预降64.76%-68.67%
青岛开挖亚洲最大跨度公路隧道:最大断面相当于六层楼房高
618期间中国手机销量下降8%:vivo第一 华为增速最快 苹果用户转投数增加
微软Xbox Series X/S主机惨遭破解:可无压力运行Wii/PS2模拟器
三伏天晒背养生靠谱吗?专家:因人而异
史上最贵!蔚来ES6 150kWh电池包即将上线 续航超900公里 能买一辆ET5
创新体验的未来:探索VR与数字孪生的无限可能性
shell脚本-监控多台服务器磁盘利用率
海口人正式被确诊为淳贵人
实探中航京能光伏REIT底层资产:打造“光伏治沙”范例 管理人积极谋求增厚收益
三大指数集体飘红,存储芯片卷土重来!
国航CA1524航班颠簸 空姐被甩到天花板!气象部门回应
《长风渡》热播 女主宋轶用柳玉茹手机壳:网友求同款
NVIDIA垄断AI市场90%份额:AMD性能追上80% 软件太不能打
汽车圈“妖魔化”的上半年终于结束了
苹果公众号文章被指毁三观 当事人回应:不在意证明自己是不是好女人
美国关键桥梁坍塌 或影响波音客机部件运输组装
收评:两市震荡上行创指涨0.81% 汽车产业链与半导体行业领涨
恒瑞医药(600276.SH):盐酸伊立替康脂质体注射液获批开展临床试验
国航CA1524遭遇的“晴空颠簸”到底是什么?为啥无法避免
可爱鲨鱼姬吸睛!华硕巨齿鲨RTX 4070显卡图赏
塔塔集团将收购纬创工厂:印度本土公司首次生产iPhone 14
网传轿车在火车站台行驶 广州站回应:公用车、报备可上
一日本田终身本田!本田官方认证婚戒发布:售价7000元
中原银行3730万股内资股二拍遭流拍
三问三答:细数GaussDB迁移的核心技术
语音平台源码搭建开发之表情功能的实现
k8s~节点的亲和性
铁路等部门积极保障暑运出行
北京一外卖骑手违法超车致人死亡 网友吵翻:支持电动自行车限行?
老头乐转正?撞脸丰田埃尔法 未奥BOMA上市 售价3.99万元起
知名车评人曝宝马空调大批量损坏:4S店和修理店都修不过来了
荣耀手表4首发一表双待:支持双卡双待 应用消息提醒
加拿大17岁少年在日本古寺刻名字:或被罚款30万日元
湖南高考录取通知书邮寄查询指南(入口+流程)
25-IP核简介
真视通7月11日盘中跌幅达5%
192亿美元投资说不要就不要!富士康拒绝透露放弃印度建厂细节 双方友好分手
南京一动物园推出钓鳄鱼项目 家长带娃船上垂钓网友不淡定:官方回应
高温天电动汽车突发自燃 消防员撬开电池包灭火
高温来袭!河北河南局地气温可达40℃以上
全球最大空头基金公司创始人:特斯拉FSD在二手车市场一文不值