最新要闻
- 世界微动态丨网友偶遇眼镜王蛇求助 博物杂志:务必远离、打输住院打赢坐牢
- 世界今亮点!Vtuber因直播《霍格沃茨之遗》被骚扰 宣布毕业
- 天天讯息:委员建议研究生招生规模动态扩大:缓解考研难
- 速看:兰博基尼领衔 今年值得期待的7款跑车 买不起还不能看看?
- 女子试用期被辞退 现场给HR普法:金句频出网友点赞称解气
- 每日聚焦:靠ChatGPT年入百万!合法还不限学历专业:一般人我不告诉他(doge)
- 全球新消息丨韩系车日子不好过!起亚狮铂拓界限时优惠:降3万还给大礼包
- 播报:LG:三星QD OLED电视更容易烧屏
- 世界聚焦:掏耳朵怎么就这么爽!
- 今日视点:不只全面屏!努比亚Z50 Ultra后摄惊艳:黄金镜皇组合
- 男子月薪3千相亲角“反向相亲”气到大妈 大爷理解:靠颜值吃饭
- 每日热文:吴京+杰森斯坦森主演!《巨齿鲨2》暑期上映 国内有望同步
- 浙大揭秘吃鱼为什么会变聪明 网友:告诉老默 我想吃鱼了
- 上海消保委提醒谨慎购买威马汽车:经营异常、消极应对投诉
- 特斯拉将放弃稀土材料 中国公司无惧:目前没有东西替代
- 即时:B站两款自研游戏将上线 CEO陈睿:能挣钱的游戏只剩下两种
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
访问者模式
访问者模式是一种将算法与对象结构分离的软件设计模式。它可以让你在不修改对象结构的情况下,对对象结构中的元素进行不同的操作。访问者模式的优点是符合单一职责原则,优秀的扩展性和灵活性。缺点是具体元素对访问者公布细节,违反了迪米特原则,而且如果元素类经常变化,会导致访问者类需要频繁修改。
访问者模式适合在以下场景下使用:- 对象结构比较稳定,但经常需要在此对象结构上定义新的操作。- 需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免让这些操作“污染”这些对象的类,也不希望在增加新操作时修改这些类。- 对象结构中的元素类型很少变化,但每个元素都有很多种变化的可能性,并且每一种变化都影响到元素的行为。
(资料图片仅供参考)
一个访问者模式的例子。
这个例子中,有一个计算机组件的接口(ComputerPart),它有一个accept方法用来接受访问者对象(ComputerPartVisitor)。
然后有三个实现了这个接口的类:键盘(Keyboard),鼠标(Mouse)和显示器(Monitor)。
每个类都实现了accept方法,调用访问者对象的visit方法,并传递自身作为参数。
访问者对象是一个接口,它有三个visit方法,分别对应三种不同的计算机组件。然后有两个实现了这个接口的类:计算机显示访问者(ComputerDisplayVisitor)和计算机修理访问者(ComputerRepairVisitor)。
每个类都实现了三个visit方法,分别对不同的计算机组件执行不同的操作。
最后,有一个计算机类(Computer),它包含了三种计算机组件,并且也实现了accept方法,调用每个组件的accept方法,并传递自身作为参数。下面是部分代码:
// 计算机组件接口public interface ComputerPart {public void accept(ComputerPartVisitor computerPartVisitor);}// 键盘类public class Keyboard implements ComputerPart {@Overridepublic void accept(ComputerPartVisitor computerPartVisitor) {computerPartVisitor.visit(this);}}// 鼠标类public class Mouse implements ComputerPart {@Overridepublic void accept(ComputerPartVisitor computerPartVisitor) {computerPartVisitor.visit(this);}}// 显示器类public class Monitor implements ComputerPart {@Overridepublic void accept(ComputerPartVisitor computerPartVisitor) {computerPartVisitor.visit(this);}}// 访问者接口public interface ComputerPartVisitor {public void visit(Keyboard keyboard);public void visit(Mouse mouse);public void visit(Monitor monitor);}// 计算机显示访问者类public class ComputerDisplayVisitor implements ComputerPartVisitor {@Overridepublic void visit(Keyboard keyboard) {System.out.println("Displaying Keyboard.");}@Overridepublic void visit(Mouse mouse) {System.out.println("Displaying Mouse.");}@Overridepublic void visit(Monitor monitor) {System.out.println("Displaying Monitor.");}}// 计算机修理访问者类public class ComputerRepairVisitor implements ComputerPartVisitor {@Overridepublic void visit(Keyboard keyboard) {System.out.println("Repairing Keyboard.");}@Overridepublic void visit(Mouse mouse) {System.out.println("Repairing Mouse.");}@Overridepublic void visit(Monitor monitor) {System.out.println("Repairing Monitor.");}}// 计算机类public class Computer implements ComputerPart {private final Listcomponents;// 构造函数初始化键盘、鼠标和显示器// 实现accept方法// 调用每个组件的accept方法,并传递自身作为参数}
这段代码的目的是演示访问者模式的用法,它定义了一个计算机组件的接口,和三个实现了这个接口的类,分别代表键盘、鼠标和显示器。这些类都有一个accept方法,用来接受一个访问者对象,并调用它的visit方法。访问者对象是一个接口,它有三个visit方法,分别对应三种不同的计算机组件。这个接口有两个实现类,分别是计算机显示访问者和计算机修理访问者。这两个类都实现了三个visit方法,分别对不同的计算机组件执行不同的操作。例如,计算机显示访问者会打印出每个组件的名称,而计算机修理访问者会打印出每个组件正在被修理。最后,有一个计算机类,它包含了三种计算机组件,并且也实现了accept方法。当调用这个方法时,它会遍历所有的组件,并调用它们的accept方法,并传递自身作为参数。这样就可以根据不同的访问者对象,在不修改原有类结构和行为的情况下,对每个组件执行不同的操作。
假设我们创建了一个计算机对象,然后分别用计算机显示访问者和计算机修理访问者来访问它,那么运行结果可能是这样的:
// 创建一个计算机对象Computer computer = new Computer();// 创建一个计算机显示访问者对象ComputerDisplayVisitor displayVisitor = new ComputerDisplayVisitor();// 调用计算机的accept方法,并传递显示访问者对象computer.accept(displayVisitor);// 输出结果:Displaying Keyboard.Displaying Mouse.Displaying Monitor.// 创建一个计算机修理访问者对象ComputerRepairVisitor repairVisitor = new ComputerRepairVisitor();// 调用计算机的accept方法,并传递修理访问者对象computer.accept(repairVisitor);// 输出结果:Repairing Keyboard.Repairing Mouse.Repairing Monitor.
环球快资讯丨Redis分布式锁常见坑点分析
世界今日讯!eas里客户端保存,提交里增加校验规则和必填
访问者模式
世界微动态丨网友偶遇眼镜王蛇求助 博物杂志:务必远离、打输住院打赢坐牢
世界今亮点!Vtuber因直播《霍格沃茨之遗》被骚扰 宣布毕业
天天讯息:委员建议研究生招生规模动态扩大:缓解考研难
全球聚焦:收个滴滴Offer:从小伙三面经历,看看需要学点啥?
环球热资讯!Study for Go! Chapter one - Type
环球最新:手写模拟Spring底层原理-Bean的创建与获取
速看:兰博基尼领衔 今年值得期待的7款跑车 买不起还不能看看?
女子试用期被辞退 现场给HR普法:金句频出网友点赞称解气
每日聚焦:靠ChatGPT年入百万!合法还不限学历专业:一般人我不告诉他(doge)
全球新消息丨韩系车日子不好过!起亚狮铂拓界限时优惠:降3万还给大礼包
zip文件结构
头条:与时俱进推动智慧城市建设,智慧管网监测加强城市治理能力
全球视讯!Java项目集成工作流activiti,会签
简单介绍Python中如何给字典设置默认值
播报:LG:三星QD OLED电视更容易烧屏
世界聚焦:掏耳朵怎么就这么爽!
今日视点:不只全面屏!努比亚Z50 Ultra后摄惊艳:黄金镜皇组合
男子月薪3千相亲角“反向相亲”气到大妈 大爷理解:靠颜值吃饭
每日热文:吴京+杰森斯坦森主演!《巨齿鲨2》暑期上映 国内有望同步
环球视点!ffmpeg视频上传及压缩Linux配置篇下
世界快资讯:【Avalonia】【跨平台】关于Prism项目模块化在Linux下路径问题
浙大揭秘吃鱼为什么会变聪明 网友:告诉老默 我想吃鱼了
上海消保委提醒谨慎购买威马汽车:经营异常、消极应对投诉
特斯拉将放弃稀土材料 中国公司无惧:目前没有东西替代
即时:B站两款自研游戏将上线 CEO陈睿:能挣钱的游戏只剩下两种
《生化危机4:重制版》新演示/截图 里昂拯救黑丝碍事梨
焦点日报:配置资源管理Secret和ConfigMap
环球视点!Windows故障转移群集 和 SQLServer AlwaysOn 搭建教程
(数据库系统概论|王珊)第九章关系查询处理和关系优化-第一节:查询处理
全球速递!视频上传及压缩SpringBoot篇上
世界热门:el-input 使用 回车键会刷新页面的问题
全球最强!传音260W快充手机将亮相:10分钟内充满
性能对标奔驰大G 比亚迪“F品牌”首车曝光:够硬够强
世界快消息!传欧盟准备批准微软收购动视-暴雪
当前报道:女司机“神操作”:100来公里高速连撞4次 竟甩锅路太窄
世界视讯!又一大作优化翻车!《卧龙:苍天陨落》RTX 4090依旧闪退
12GB+256GB到手仅2699元!Redmi K60正式开启降价
温州特斯拉事故驾驶员家属发声:记不清车辆失控场景 妻子去世自责
环球时讯:中国航天员遇到外星人怎么办?载人航天总师:积极交流 星际合作
焦点要闻:漫威等好莱坞大片中国市场遇冷:大家不爱看了 不符合国人审美、文化观
550元 富士发布Instax Mini 12拍立得相机 支持APP存照片
环球即时:卷成白菜价!致态TiPlus 7100固态硬盘新史低:1TB仅549元
环球头条:马斯克10万亿美元“改造地球”背景下!特斯拉电机要完全不用稀土:专家回应有可能
读Java性能权威指南(第2版)笔记07_即时编译器上
今头条!天问二号任务已获得国家批准立项:要从小行星2016 HO3采样返回
实现 Vue 折叠面板组件
委员:996制度是导致就业难、生育率低的重大原因
当前播报:电商价格战开打!京东百亿补贴上线:全场包邮 买贵双倍赔
特斯拉未来要狂暴降价:就靠这改变世界?其实都被骗了!
世界快资讯:豆瓣8.9分!韩国拼体格真人秀在欧美爆红
暗黑三国风!《卧龙:苍天陨落》正式上线:298元 GTX 1650就能玩
3.3 数据结构 时间复杂度 和空间复杂度 计算
环球简讯:004. html篇之《标签分类和嵌套》
天天动态:星巴克国内最大对手!瑞幸咖啡财报:年收入首次突破百亿
硬件狗狗3.3新版发布:跑分排行 实时PK
【环球热闻】使用ansible部署服务到k8s
专家:双休制度很难被改变 可以试试“做四休三”
【当前独家】同样是PCIe 5.0 SSD:Intel、AMD跑分竟不一样!差距达30%
世界观焦点:大熊猫为什么近期扎堆回国?美日等国养不起“国宝”了吗?完全是误解
当前速讯:女子称因准点下班试用期第3天被辞退:还被领导一顿痛骂
全球聚焦:R数据分析:做量性研究的必备“家伙什”-furniture包介绍
003. html篇之《表单》
全球即时:Codeforces 1774 G Segment Covering 题解 (观察性质,倍增)
【全球播资讯】Feign踩坑源码分析 -- 请求参数分号变逗号
【全球快播报】火箭弹电子版领取处>>
视讯!完美还原!玩家用虚幻5复刻《狂飙》高启强老家:桌上还有孙子兵法
《龙马精神》4月上映!69岁成龙再跳120米高摩天轮 本人直言小事情
天天快资讯:C++面经(持续更新)
今亮点!实验楼(规则)怪谈
热推荐:电视剧《三体》豆瓣评分上涨 于和伟:《三体》涨分像涨工资
热门看点:《卧龙:苍天陨落》今晚零点正式解锁!乱世三国冒险即将开启
前沿资讯!口感醇正!熊猫精酿好时光皮尔森啤酒好价:2.8元/听
即时:中国科技公司:让老外开眼了
完爆H.265!优酷用上H.266编解码:最便宜手机放视频也丝般顺滑
世界今头条!搭建两台web服务器基于HAProxy实现负载均衡
焦点短讯!路飞-day5——git 多分支开发、git远程仓库、ssh方式连接远程仓库、协同开发、冲突解决、线上分支合并、远程仓库回滚
简讯:(数据库系统概论|王珊)第七章数据库设计:习题
全球时讯:我国网民规模达10.67亿!短视频用户首次突破10亿:你每天刷多久?
B站发布2022年Q4及全年财报:全年营收219亿元 Q4日活用户达9280万
零排放、低噪音!国内首列氢燃料混合动力铰接轻轨车下线
环球微头条丨003 jmeter连接数据库及jmeter关联提取器
git-git、gitee使用介绍
面试官:从 MySQL 读取 100w 数据进行处理,应该怎么做?问倒一大遍!
天天快播:常用的Prestosql
python3和scrapy使用亿牛云隧道代理问题以及代码
为何近半数安卓用户想换苹果?背后原因揭开
天天快资讯:国人也买不动了!1月iPhone全球销量大跌11% 苹果会降价刺激销量吗?
当前速看:纯电飞行250公里 国产厂商创电动载人飞行器新纪录
【世界新要闻】公司招聘会计要求一定是A型血 网友:很奇葩
每日快讯!中国空间站成功首次“点火”!高速相机拍下神奇一幕
今日观点!Pod控制器
创建型:构造器模式
天天最新:Python类和对象的绑定方法及非绑定方法
答菲洗脸巾80片到手6.9元:干湿两用 不掉毛絮
全球视点!男子犯困竟在高速行车道睡觉30分钟 科普:连续开车不应超4小时
甄子丹谈好莱坞对亚裔的刻板印象:怎么都这么老套?
特斯拉减少75%碳化硅用量 马斯克一句话干崩第三代半导体 上市公司回应