JavaScript设计模式样例二十二 —— 访问者模式
访问者模式(Visitor Pattern)
定义:使用一个访问者类,改变元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。
目的:将数据结构与数据操作分离。
场景:您在朋友家做客,您是访问者,朋友接受您的访问,您通过朋友的描述,然后对朋友的描述做出一个判断,这就是访问者模式。
// 元素类
class Elements {
constructor () {
this.action = () => {
console.log('hi~')
}
this.accept = (visitor) => {
visitor.visit(this)
}
}
} // 访问者
class Visitor {
constructor () {
this.visit = (elements) => {
elements.action()
}
}
} const ele = new Elements()
const visi = new Visitor()
ele.accept(visi)
Git地址:https://github.com/skillnull/Design-Mode-Example
JavaScript设计模式样例二十二 —— 访问者模式的更多相关文章
- JavaScript设计模式 样例二 —— 策略模式
		策略模式(Strategy Pattern): 定义:定义了一族算法: 封装了每个算法: 这族的算法可互换代替. 目的:将算法的使用与算法的实现分离开来. 场景:可用来消除大量的条件分支语句. 例:J ... 
- JavaScript设计模式样例四 —— 单例模式
		单例模式(Singleton Pattern): 定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 目的:阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例. 场景: ... 
- JavaScript设计模式 样例三 —— 装饰模式
		装饰模式(Decorator Pattern): 定义:在不改变原对象的情况下,动态的给对象添加一些额外的职责.就功能而言,装饰模式相比生成子类更为灵活. 目的:把类的核心职责和装饰功能区分开.可以去 ... 
- JavaScript设计模式 样例一 —— 工厂模式
		工厂模式(Factory Pattern): 定义:定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类.工厂方法让类的实例化推迟到子类中进行. 目的:工厂模式是为了解耦,把对象的创建和使用 ... 
- 备忘录模式  Memento 快照模式 标记Token模式 行为型 设计模式(二十二)
		备忘录模式 Memento 沿着脚印,走过你来时的路,回到原点. 苦海翻起爱恨 在世间难逃避命运 相亲竟不可接近 或我应该相信是缘份 一首<一生所爱>触动了多少 ... 
- Java 设计模式系列(二十)状态模式
		Java 设计模式系列(二十)状态模式 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式.状态模式允许一个对象在其内部状态改变的时候改 ... 
- JAVA基础知识总结:一到二十二全部总结
		>一: 一.软件开发的常识 1.什么是软件? 一系列按照特定顺序组织起来的计算机数据或者指令 常见的软件: 系统软件:Windows\Mac OS \Linux 应用软件:QQ,一系列的播放器( ... 
- Web 前端开发精华文章推荐(HTML5、CSS3、jQuery)【系列二十二】
		<Web 前端开发精华文章推荐>2014年第一期(总第二十二期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML ... 
- 剑指Offer(二十二):从上往下打印二叉树
		剑指Offer(二十二):从上往下打印二叉树 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/b ... 
- 学习笔记:CentOS7学习之二十二: 结构化命令case和for、while循环
		目录 学习笔记:CentOS7学习之二十二: 结构化命令case和for.while循环 22.1 流程控制语句:case 22.2 循环语句 22.1.2 for-do-done 22.3 whil ... 
随机推荐
- rar终端常用命令
			rar终端常用命令 1. 跳过目录: rar a xxx.rar -x./path_to_dir/ ./xxx/ [注] rar后面的文件夹不需要通配符 2. 加密码 rar a xxx.tar -p ... 
- java中的即时编译(JIT)简介
			Java发展这么多年一直长青,很大一部分得益于开发人员长期对其坚持不懈的优化:写得更少,跑得更快!JIT就是其中一项十分重要的优化. JIT全程Java Intime Compiler,即Java即时 ... 
- 自动修改网卡 IP
			1. 讲个故事 我的一同事需要调试 PLC,需要经常修改电脑 IP 在各个工位的 PLC 间来回连接.于是,每次需要改变 IP 的时候都是手动点开网络管理界面然后再修改.终于有一天,一天改 80 次 ... 
- 【原创软件】第7期:文件夹生成器V1.0-按照列表批量生成文件夹,简单小巧
			一.背景 因为工作需要,需要批量创建文件夹.为了省去人工创建时间,使用aardio制作了一个软件. 二.功能演示 三.下载地址 https://www.123pan.com/s/9Rn9-1xppH ... 
- 转载 | win11右键菜单改为win10的bat命令(以及恢复方法bat)
			原文来自这里:https://blog.51cto.com/knifeedge/5340751 版权归:IT利刃出鞘 本质上就是写入注册表. 一.右键菜单改回Win10(展开) 1. 新建文件:win ... 
- oeasy教您玩转vim - 20 - 显示标尺
			显示标尺 回忆上节课内容 定义标记 a ma 删除标记 a :delm a 跳转到标记 a 'a `a 跳到 a 对应的行和列 'a 跳到 a 对应的行 查看所有标记 :marks 各种标记类型 '' ... 
- 《最新出炉》系列入门篇-Python+Playwright自动化测试-56- 多文件上传 - 下篇
			1.简介 前边的两篇文章中,宏哥分别对input控件上传文件和非input控件上传文件进行了从理论到实践地讲解和介绍,但是后来又有人提出疑问,前边讲解和介绍的都是上传一个文件,如果上传多个文件,Pla ... 
- Jmeter JDBC连接配置
			JDBC连接配置(JDBC Connection Configuration),用于创建数据库连接,后续可对数据库进行增删查等操作.和组件[JDBC请求(JDBC Request)]搭配使用 组件路径 ... 
- 第一讲:日志系统:一条sql更新语句是如何执行的?
			目录 第一讲:日志系统:一条sql更新语句是如何执行的? 回顾 抛出问题: 提出思路: 重要的日志模块:redo log 重要的日志模块:binlog 为什么会有两份日志呢? 这两种日志有以下三点不同 ... 
- 【C】Re05 指针
			一.变量 & 指针 变量 = 内存地址 + 存储值 指针变量 = 内存地址 + 存储值[变量的内存地址] 作用: 间接访问内存地址 内存地址 = 地址编号 地址编号:内存中的每个字节唯一的编号 ... 
