web前端中访问者模式的示例分析
发表于:2024-10-23 作者:千家信息网编辑
千家信息网最后更新 2024年10月23日,这篇文章将为大家详细讲解有关web前端中访问者模式的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。访问者模式(Visitor Pattern)访问者模式 是
千家信息网最后更新 2024年10月23日web前端中访问者模式的示例分析
这篇文章将为大家详细讲解有关web前端中访问者模式的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
访问者模式(Visitor Pattern)
访问者模式 是一种将算法与对象结构分离的设计模式,通俗点讲就是:访问者模式让我们能够在不改变一个对象结构的前提下能够给该对象增加新的逻辑,新增的逻辑保存在一个独立的访问者对象中。访问者模式常用于拓展一些第三方的库和工具。
// 访问者 class Visitor { constructor() {} visitConcreteElement(ConcreteElement) { ConcreteElement.operation() }}// 元素类 class ConcreteElement{ constructor() { } operation() { console.log("ConcreteElement.operation invoked"); } accept(visitor) { visitor.visitConcreteElement(this) }}// clientlet visitor = new Visitor()let element = new ConcreteElement()elementA.accept(visitor)
访问者模式的实现有以下几个要素:
Visitor Object:访问者对象,拥有一个
visit()
方法Receiving Object:接收对象,拥有一个
accept()
方法visit(receivingObj):用于Visitor接收一个
Receiving Object
accept(visitor):用于
Receving Object
接收一个Visitor,并通过调用Visitor
的visit()
为其提供获取Receiving Object
数据的能力
简单的代码实现如下:
Receiving Object:function Employee(name, salary) { this.name = name; this.salary = salary;}Employee.prototype = { getSalary: function () { return this.salary; }, setSalary: function (salary) { this.salary = salary; }, accept: function (visitor) { visitor.visit(this); }}Visitor Object:function Visitor() { }Visitor.prototype = { visit: function (employee) { employee.setSalary(employee.getSalary() * 2); }}
验证一下:
const employee = new Employee('bruce', 1000);const visitor = new Visitor();employee.accept(visitor);console.log(employee.getSalary());//输出:2000
场景
对象结构中对象对应的类很少改变,但经常需要在此对象结构上定义新的操作
需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免让这些操作"污染"这些对象的类,也不希望在增加新操作时修改这些类。
优点
符合单一职责原则
优秀的扩展性
灵活性
缺点
具体元素对访问者公布细节,违反了迪米特原则
违反了依赖倒置原则,依赖了具体类,没有依赖抽象。
具体元素变更比较困难
关于"web前端中访问者模式的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
对象
访问者
模式
结构
元素
原则
篇文章
前端
示例
分析
方法
更多
逻辑
不同
不错
优秀
实用
通俗
困难
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
闵行区营销软件开发优势
一个网页多服务器
成都 对日软件开发
苏州戴尔服务器发展空间
校园网络安全提升
java扫描数据库数据
软件开发方法种类
多ip服务器适合做采集业务吗
有数据库的源码怎么建站
广州周边网络安全产品
杭州正规软件开发服务
sql无权限删除数据库
泰州银联软件开发欢迎来电
戴尔服务器断电维修
未转变者服务器当面刷新物品
数据库长连接 自动中断
滨海新区企业网络技术售后保障
数据库开发前沿技术
1.12数据库肩部板甲
北京央企落户后几年服务器
闵行区营销软件开发优势
大数据网络安全管理研究背景意义
母婴辅食软件开发产品风险
武汉机架服务器价格
化妆品二维码防伪软件开发
小学生网络安全工作
国企工厂做软件开发
数据库的文件如何复制
数据库理论是什么
成都市教育系统网络安全周