最新要闻
- 观天下!密密麻麻!地震后松毛虫大规模入侵土耳其:场面惊悚 令人不适
- 广东一特斯拉连撞多车冲毁店门现场视频:网友看完称刹车灯亮了 油门当刹车
- 世界热文:75岁老人中风 好友发现运动步数为0报医:最终脱离危险
- 全球首个财务自由大学诞生 美国普林斯顿大学2600亿财富养活自己
- 世界今头条!“帮忙资金”助基金保壳
- 当前聚焦:工作人员帮游客捡手机被4只幼虎围观 网友:幸亏是“幼儿园”
- 全球快看点丨董明珠:中国制造业要想成为世界级 必须在创新上下功夫
- 摄影师把iPhone塞水下拍美景 咕噜咕噜一阵冒泡 Siri:这把憋气局
- 全球速读:吴青峰发文请大家别听苏打绿的歌:母带仍被非法利用 还听是助纣为虐
- 学弈这篇文言文是什么意思
- 仅1/3美国人能轻松支付400美元应急费用:信用卡违约率激增
- 世界快讯:裁员70% 关停两个办公点:自动驾驶卡车公司Embark倒闭边缘
- 【世界新视野】想买法拍车捡漏?你可能得先准备10本驾照
- 全球速读:985高校女大学生裸辞大公司:每天活得像老鼠
- 【当前热闻】瞬狙和闪狙哪个更快_瞬狙
- 精选!台球杆什么皮头最好
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
天天通讯!Spring Boot 实现装饰器模式,真香!
前言
本文配合实战案例介绍我们平时 在springboot项目里面 怎么去用 装饰器模式、多层装饰怎么玩。
首先先说下装饰器模式是什么
装饰器模式(Decorator Pattern) 也称为包装模式(Wrapper Pattern) 是指在不改变原有对象的基础之上,将功能附加到对象上,提供了比继承更有弹性的替代方案(扩展原有对象的功能),属于结构型模式。
(相关资料图)
官方:
装饰器模式的核心是功能扩展,使用装饰器模式可以透明且动态地扩展类的功能。
大白话一点:
有点像是 组合, 就是 我不动原先的业务东西,但是 又想给这个业务东西 加点额外的职责东西。
- 非入侵的。
- 可拼凑的。
实战开搞
实例简述预热
ISurfTheInternetService
网上冲浪冲浪业务 接口 interface
FadInternetCafe implements ISurfTheInternetService
时尚网咖 实现冲浪业务接口,实现重写提供 网上冲浪方法RetroInternetBar implements ISurfTheInternetService
复古网吧 实现冲浪业务接口,实现重写提供 网上冲浪方法
然后在这个原有的冲浪业务下, 不做代码入侵, 我们想给网上冲浪冲浪业务加一点额外的职责,比如XXX,XXX啥的xxx业务。
于是乎,我们开始玩装饰器设计模式
SurfDecorator implements ISurfTheInternetService
网上冲浪装饰器
怎么玩的?看代码, 后面还会说怎么多层装饰 。
Spring Boot 基础就不介绍了,推荐看这个免费教程:
https://github.com/javastacks/spring-boot-best-practice
事不宜迟。
① ISurfTheInternetService.java 网上冲浪冲浪业务 接口
/** * @Author: JCccc * @Date: 2022-10-07 15:18 * @Description: 网上冲浪 */public interface ISurfTheInternetService { /** * 冲起来 */ void doSurfing();}
② FadInternetCafe.java 时尚网咖业务实现类
import com.example.mydemo.service.ISurfTheInternetService;import org.springframework.stereotype.Service;/** * @Author: JCccc * @Date: 2022-10-07 15:21 * @Description: 时尚 网咖 */@Service("fadInternetCafeService")public class FadInternetCafe implements ISurfTheInternetService { @Override public void doSurfing() { System.out.println("在时尚 网咖 ,网上冲浪咯~"); }}
③ RetroInternetBar.java 复古网吧业务实现类
import com.example.mydemo.service.ISurfTheInternetService;import org.springframework.stereotype.Service;/** * @Author: JCccc * @Date: 2022-10-07 15:21 * @Description: 复古 网吧 */@Service("retroInternetBarService")public class RetroInternetBar implements ISurfTheInternetService { @Override public void doSurfing() { System.out.println("在复古 网吧 ,网上冲浪咯~"); }}
先到这, 写个controller方法,模拟平时搬砖真实场景 :
@Autowired@Qualifier("fadInternetCafeService")ISurfTheInternetService fadInternetCafeService;@Autowired@Qualifier("retroInternetBarService")ISurfTheInternetService retroInternetBarService;@GetMapping("/doTest")public void doTest() { fadInternetCafeService.doSurfing(); retroInternetBarService.doSurfing();}
可以看到调用效果是这样的:
然后。
然后在这个原有的冲浪业务下, 不做代码入侵, 我们想给网上冲浪冲浪业务加一点额外的职责,比如XXX,XXX啥的xxx业务。
④ SurfDecorator.java 网上冲浪装饰器
/** * @Author: JCccc * @Date: 2022-10-07 15:29 * @Description: */public class SurfDecorator implements ISurfTheInternetService { /** * 内部维护一个冲浪接口类 */ private ISurfTheInternetService surfTheInternetService; /** * 构造方法 把传入的 类 赋值给内部类 * @param surfTheInternetService */ public SurfDecorator(ISurfTheInternetService surfTheInternetService) { this.surfTheInternetService = surfTheInternetService; } /** * 增强的网上冲浪方法 */ @Override public void doSurfing() { System.out.println("SurfDecorator 模拟业务 增强器在玩一点很新的东西,可能是一些额外的职责业务...."); //增强 surfTheInternetService.doSurfing(); System.out.println("SurfDecorator 模拟业务 增强器在玩一点很新的东西,可能是一些额外的职责业务,比如说是XXXX"); }}
然后我们通过装饰器去 调用方法,实现增强职责:
@GetMapping("/useDecoratorTest")public void useDecoratorTest() { SurfDecorator fadInternetCafeDecoratorService = new SurfDecorator(fadInternetCafeService); fadInternetCafeDecoratorService.doSurfing(); SurfDecorator retroInternetBarDecoratorService = new SurfDecorator(retroInternetBarService); retroInternetBarDecoratorService.doSurfing();}
可以看到效果, 它装起来了 :
然后,如果我们想多层装饰, 也就是 ,针对不同也网上冲浪业务实现类,想装一层又一层,
比如 时尚网卡的网上冲浪业务, 网咖老板比较腹黑,不仅仅需要做 A 增强业务,
还想看看每个来上网的人到底是不是有钱人,所以想检测一下卡里面的钱有多少,好安排一些‘优质服务’。
⑤ 又一层装饰器 RechargeDecorator.java :
ps :它继承了基本的网上冲浪装饰器, 然后增强了自己的检测充值金额业务方法。
/** * @Author: JCccc * @Date: 2022-10-07 15:29 * @Description: */public class RechargeDecorator extends SurfDecorator{ public RechargeDecorator(ISurfTheInternetService surfTheInternetService) { super(surfTheInternetService); } @Override public void doSurfing() { super.doSurfing(); checkRecharge(); } private void checkRecharge(){ System.out.print("RechargeDecorator 也在增强,看看这个货卡里面充了有多少,就来上网"); }}
然后看看 我们怎么玩 多层装饰:
@GetMapping("/moreDecoratorTest")public void moreDecoratorTest() { //先装一哈 SurfDecorator retroInternetBarDecoratorService = new SurfDecorator(retroInternetBarService); //再包装一哈 RechargeDecorator rechargeDecorator = new RechargeDecorator(retroInternetBarDecoratorService); rechargeDecorator.doSurfing();}
可以看到效果,它装起来了,又装起来了:
来源:blog.csdn.net/qq_35387940/article/details/127464609
近期热文推荐:
1.1,000+ 道 Java面试题及答案整理(2022最新版)
2.劲爆!Java 协程要来了。。。
3.Spring Boot 2.x 教程,太全了!
4.别再写满屏的爆爆爆炸类了,试试装饰器模式,这才是优雅的方式!!
5.《Java开发手册(嵩山版)》最新发布,速速下载!
觉得不错,别忘了随手点赞+转发哦!
-
语义分割评价指标(Dice coefficient, IoU)
语义分割任务常用的评价指标为Dicecoefficient和IoU。Dice和IoU都是用来衡量两个集合之间相似性的度量,...
来源: -
(数据库系统概论|王珊)第十章数据库恢复技术-第一、二节:事务的基本概念和数据库恢复概述
pdf下载:密码7281专栏目录首页:【专栏必读】(考研复试)数据库系统概论第五版(王珊)专栏学习笔记目...
来源: 语义分割评价指标(Dice coefficient, IoU)
(数据库系统概论|王珊)第十章数据库恢复技术-第一、二节:事务的基本概念和数据库恢复概述
天天通讯!Spring Boot 实现装饰器模式,真香!
观天下!密密麻麻!地震后松毛虫大规模入侵土耳其:场面惊悚 令人不适
广东一特斯拉连撞多车冲毁店门现场视频:网友看完称刹车灯亮了 油门当刹车
世界热文:75岁老人中风 好友发现运动步数为0报医:最终脱离危险
全球首个财务自由大学诞生 美国普林斯顿大学2600亿财富养活自己
大神教你在 Linux 中查看你的时区
世界今头条!“帮忙资金”助基金保壳
当前聚焦:工作人员帮游客捡手机被4只幼虎围观 网友:幸亏是“幼儿园”
全球快看点丨董明珠:中国制造业要想成为世界级 必须在创新上下功夫
摄影师把iPhone塞水下拍美景 咕噜咕噜一阵冒泡 Siri:这把憋气局
全球速读:吴青峰发文请大家别听苏打绿的歌:母带仍被非法利用 还听是助纣为虐
学弈这篇文言文是什么意思
环球快报:读Java性能权威指南(第2版)笔记08_即时编译器中
仅1/3美国人能轻松支付400美元应急费用:信用卡违约率激增
可视化调试某个js对象的属性UI插件 class HTUI
每日速递:一进群就水群?试试这个水群拦截工具
世界快讯:裁员70% 关停两个办公点:自动驾驶卡车公司Embark倒闭边缘
【世界新视野】想买法拍车捡漏?你可能得先准备10本驾照
全球速读:985高校女大学生裸辞大公司:每天活得像老鼠
【当前热闻】瞬狙和闪狙哪个更快_瞬狙
精选!台球杆什么皮头最好
世界快消息!打开MASA Blazor的正确姿势4.1:母版页布局
全球热推荐:Study for Go ! Chapter three - Function
day02-项目实现01
全球速读:【奶奶看了都会】ChatGPT3.5接入企业微信,可连续对话
将外部参数传入awk命令的方法汇总
【热闻】Asp.net core mapcontrollers 背后干了些啥
思科交换机的密码策略与端口安全设置
当前关注:Mac OS 打开pycharm立即闪退,报错initial heap size set to a larger value than the max
“一日三次”的药 到底该怎么吃?你可能一直都错了
比亚迪百万豪车!实拍仰望U8原地掉头:这圈儿真圆
环球关注:微软Edge拯救低清老视频 秒变高清!三代N卡、A卡都能用
快看:棉锦防火布
环球即时看!EF7DbContext池
天天时讯:DotNet 5.0 部署 Docker 注意
男子高烧近41度 体温计贴脸狂飙:近期谨防甲流 病死率很高
老人捡到手机不会接听错过四十多通电话 最终成功归还
反诈老陈自曝2022年收入133万:缴税近40万 捐赠84万+
国家二级保护动物有哪些
任意Exe转ShellCode?
快报:一手卖掉《古墓丽影》:SE宣布总裁松田洋介辞职
每日速看!纪念上映20周年:《指环王:王者无敌》将重映4小时加长版
理想L7本月开启交付 50万以内第二排舒适度最好的SUV
全球信息:AMD显卡驱动罕见Bug:Windows都给搞崩了
精彩看点:老牛嚼电线被击倒 网友:应该是母牛 因为公牛不漏电
环球看点!奥斯卡掌掴事件后续
【读书】《成就上瘾:把成事当成一种习惯》
json转golang结构
婚变?前亚视高层与澳门名媛太太近一年未见
焦点播报:员工增长近万人!AMD去年研发支出同比大幅上涨
小米有品219元:平仄普洱生熟茶饼礼盒99元大促
每日热闻!胡令能是哪里人_胡令能简介
手工耿发明新刑具“忏悔辅助器”:让你的脑袋自动撞墙
世界观点:登陆Steam国区:暗黑Like游戏《火炬之光:无限》PC版或将手游同步推出
女子地铁上手机外放收“罚单” 南京地铁:车厢内禁喧哗
第六章 应用层
python文件的高级应用
1. 简单版
群晖NAS大促:四盘位DS420+历史低价
每日速看!Twitter被曝12月营收骤降40%:广告商抽身成主要原因
【全球播资讯】node.js学习技巧
速递!撑伞也是雨中人什么意思_撑伞也是雨中人这句话什么意思
Intel或将开发“视频DLSS”同款超分辨率技术:最低仅需10代酷睿
天天信息:MASA Framework源码解读-01 MASAFacotry工厂设计(一个接口多个实现的最佳姿势)
环球通讯!(数据库系统概论|王珊)第九章关系查询与关系优化:习题
天天看点:侠盗猎车手圣安地列斯攻略
每日热议!稳了!索尼PS4/PS5之父操刀新一代PS6主机:发布时间及首发大作曝光
当前消息!三星Galaxy S23 Ultra又出问题:S Pen被指出现随机断连
全球短讯!Codeforces 1785 E Infinite Game 题解 (图论,自动机,dp)
数字信号处理流程
播报:P8大佬的 62条SQL优化策略,太牛X了!! 收藏起来有大用!!!
学会了Java 8 Lambda表达式,简单而实用
天天最资讯丨修复 Ubuntu 中的 “Key is stored in legacy trusted.gpg keyring” 问题
数码相机卖不动:2023年1月销量大跌36%!单反惨烈
世界今日讯!长安深蓝全新中型SUV S7亮相:仪表盘“消失”
传大超转职普莱斯上尉
环球快播:美国一架飞机在飞行中突然强烈颠簸 竟致1人死亡
一口气58首歌 主办方因为周杰伦多唱被罚钱!周董回应:哥无所谓
环球热消息:抖店个体和企业开店费用_开店费用
世界关注:成都皮肤科医院排名第一_成都皮肤科医院qq
每日看点!硬挺不厚 穿着不热!放克纯棉T恤大促:20.1元包邮
售价13.99万元起 本田型格HATCHBACK正式上市
辣眼睛?网红“安福路小公主”首度回应质疑:给自己外貌打90分 对恶评不在意
【环球播资讯】(数据库系统概论|王珊)第九章关系查询处理和关系优化-第四节:查询优化之物理优化
直播电商名词解释
超百Gbps容量!中星26号卫星成功定点:我国自研卫星平台
全球微动态丨防缩水可机洗 GXG男士针织衫:89元手慢无
Java实战(第二版)读后总结与感想
201球!姆巴佩加冕队史射手王 24岁就成第一人 2.2亿投皇马?
日系车走下神坛?本田中国2月销量大跌三成 已连跌6月
世界看点:国家老年大学正式揭牌!超40万门课程 50周岁以上可以报名
全球自动驾驶公司排名公布 特斯拉再次垫底
环球看点!大熊猫走姿神似《狂飙》高启盛 动物园回应:走路“带风”性格豪放
人脸识别还要蹲车外看摄像头?小鹏致歉:已下架第三方应用
环球观速讯丨上汽奥迪员工内购价最高优惠16万 客服:若倒卖一查到底
当前消息!谈谈 WMTS 中的 TileMatrix 与 ScaleDenominator
当前滚动:《街霸6》嘉米伸懒腰 又一次引发网友二创热潮
全球今日讯!day01-项目介绍+SSM环境搭建