首页 > 其他分享 >10月6日总结

10月6日总结

时间:2023-10-06 14:22:57浏览次数:39  
标签:总结 10 对象 元素 模式 操作 导览 访问者

访问者模式(Visitor Pattern)是一种强大的行为型设计模式,它允许你在不改变被访问对象的类的前提下,定义新的操作和行为。本文将详细介绍访问者模式,包括其定义、举例说明、结构、实现步骤、Java代码实现、典型应用场景、优缺点、类似模式以及最后的小结。
1 模式的定义

访问者模式允许你在不修改被访问对象的类的情况下,定义并封装一组新的操作。它通常用于处理对象结构中的元素,并能够在不改变这些元素的类的情况下,为这些元素添加新的操作。这种模式的关键思想是将操作与元素分离,使得增加新操作变得相对容易。
2 举例说明

访问者模式的思想在日常生活中有许多应用,以下是几个比较符合访问者模式且为大家所熟知的例子:

博物馆导览员:在博物馆中,导览员扮演着访问者的角色。博物馆中的艺术品、展品等可以被看作是元素,而导览员则是具体访问者。导览员可以根据参观者的需求,为他们提供不同的讲解、信息或故事,而不需要改变艺术品本身。

旅游团队:旅游团队的导游可以被看作是访问者,而游客可以被视为元素。导游可以根据游客的兴趣和需求,提供不同的旅游信息和体验,而不需要修改景点本身。

电子商务网站的购物车:在电子商务网站中,购物车可以被看作是对象结构,而购买的商品可以被视为元素。不同的访问者可以执行不同的操作,例如计算总价、生成订单等,而不需要修改商品类的代码。

这些例子都展示了访问者模式的核心思想:允许在不改变元素本身的情况下,为元素执行不同的操作。这种分离关注点的设计模式在实际生活中具有广泛的应用。
3 结构

访问者模式由以下主要组件组成:

访问者(Visitor):定义了要访问的对象的接口,包括访问不同类型对象的方法。

具体访问者(ConcreteVisitor):实现了访问者接口,定

标签:总结,10,对象,元素,模式,操作,导览,访问者
From: https://www.cnblogs.com/lmyy/p/17744543.html

相关文章

  • 10月5日总结
    四、用go语言,重写ENQUEUE和DEQUEUE的代码,使之能处理队列的下溢和上溢。文心一言:在Go语言中,我们可以使用切片来实现队列。下面是如何实现ENQUEUE和DEQUEUE操作,同时处理队列的下溢和上溢的情况:packagemainimport"fmt"typeQueuestruct{elements[]interface{}}......
  • 10月4日总结
    在deepin23上编译gcc13.2deepin20素以软件版本过老被人诟病,换成最新的deepin23之后情况大有好转,但是gcc版本为11.2,鄙人对此仍有意见,所以特意研究了如何编译一份较新的gcc来用。1.下载源码包http://mirrors.ustc.edu.cn/gnu/gcc/我相关在中科大镜像站下载东西,选择13.2版本的压......
  • 深度学习模型部署与优化:策略与实践;L40S与A100、H100的对比分析
    ★深度学习、机器学习、生成式AI、深度神经网络、抽象学习、Seq2Seq、VAE、GAN、GPT、BERT、预训练语言模型、Transformer、ChatGPT、GenAI、多模态大模型、视觉大模型、TensorFlow、PyTorch、Batchnorm、Scale、Crop算子、L40S、A100、H100、A800、H800随着生成式AI应用的迅猛发展......
  • 板刷2023.10.04
    CF1878F.VasilijeLovesNumberTheory题解:约数个数+取模性质对\(n\)质因子分解得到,\(n=p_1^{\alpha_1}p_2^{\alpha_2}...p_k^{\alpha_k}\)那么显然\(d(n)=(\alpha_1+1)\times(\alpha_2+1)...(\alpha_k+1)\)根据题意可以得到:\(n\%d(n)=0\)的时候一定......
  • 202310061227-《心得:低版本mysql配置一,些轮子插件》
    1.对于mysql5.7.42,驱动(connector)选择:5.1.46。2.测试链接时:useSSL=true&enabledTLSProtocols=TLSv1.1 驱动链接字符串上要拼接上。3.驱动链接字符串:高版本mysql,意味着高版本connector,选>=8;低版本,选择5.x;               高版本mysql,com.my......
  • 2023-10-02-周一
    吾日三省吾身titlecontent简单评价这一天只能说差强人意今天运动了吗?0学习还满意否0.5会不会又emo了0今日学习任务titlecontent学习ELF文件格式0.2安卓开发0呃..上午才是搞笑的我很早起来,洗了一个澡..然后还是很困...所以......
  • 2023-10-05-周五
    运动,,,貌似不可能了,,,哈哈我发现,,最近的睡眠好像真还有点小离谱了基本上都是闹钟一响,然后差不多8:30的样子,然后咪一咪然后继续睡,差不多9:20~9:40的样子,,就内心挣扎,愧疚的醒过来然后洗漱一下,然后杂七杂八看一下手机然后....就差不多10:00的样子然后懒懒散散的去实验......
  • 38-10
    将一个带头结点的单链表A分解为两个带头结点的单链表A和B,使得A表中含有序号为奇数的元素,B表含有序号为偶数的元素,且保持相对顺序不变应好好分析指针变化,可减少冗余代码!!!#include<stdio.h>#include<stdlib.h>typedefstructnode{intdata;structnode*next;}L......
  • cf1110D. Jongmah
    cf1110D.Jongmah如果能够发现一点转化的话就简单很多比如说最后的答案里出现了三个(a,a+1,a+2),我们可以将它看作是(a,a,a),(a+1,a+1,a+1),(a+2,a+2,a+2)也就是每种三元组(除了(a,a,a))最多只会出现两次那么每种数最多有6个是个其它数组成三元组。直接dp即可#include<cstdio>#......
  • 读书笔记(20231006)
    80%的时间,投入到你最感兴趣的事情当中,20%的时间探索人生边界。身份标签、能力标签、市场标签三个维度出发,带大家重新梳理自己的定位,让大家的标签自带“吸金力”。学习了之后,一定要有输出。这个“输出”可以是写一篇完整的学习笔记,分享给别人听,也可以是,把课上的方法用起来......