佛山知名营销网站开发,安仁网络推广,阿里云ecs 多wordpress,科技创新的魅力文章目录 前言介绍实现优缺点应用场景后言 前言 hello world欢迎来到前端的新世界 #x1f61c;当前文章系列专栏#xff1a;前端设计模式 #x1f431;#x1f453;博主在前端领域还有很多知识和技术需要掌握#xff0c;正在不断努力填补技术短板。(如果出现错误#… 文章目录 前言介绍实现优缺点应用场景后言 前言 hello world欢迎来到前端的新世界 当前文章系列专栏前端设计模式 博主在前端领域还有很多知识和技术需要掌握正在不断努力填补技术短板。(如果出现错误感谢大家指出) 感谢大家支持您的观看就是作者创作的动力 介绍 访问者模式 是一种将算法与对象结构分离的设计模式通俗点讲就是访问者模式让我们能够在不改变一个对象结构的前提下能够给该对象增加新的逻辑新增的逻辑保存在一个独立的访问者对象中。访问者模式常用于拓展一些第三方的库和工具。 // 访问者
class Visitor {constructor() {}visitConcreteElement(ConcreteElement) {ConcreteElement.operation()}
}
// 元素类
class ConcreteElement{constructor() {}operation() {console.log(ConcreteElement.operation invoked); }accept(visitor) {visitor.visitConcreteElement(this)}
}
// client
let visitor new Visitor()
let element new ConcreteElement()
elementA.accept(visitor)
实现
访问者模式的实现有以下几个要素
Visitor Object访问者对象拥有一个visit()方法Receiving Object接收对象拥有一个 accept() 方法visit(receivingObj)用于Visitor接收一个Receiving Objectaccept(visitor)用于Receving Object接收一个Visitor并通过调用Visitor的 visit() 为其提供获取 Receiving Object数据的能力
Receiving Objectfunction 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 Objectfunction 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
优缺点
优点 分离数据结构与操作访问者模式可以帮助我们将数据结构与对其进行操作的算法解耦使得数据结构的变化不会影响到算法的变化。 增加新的操作很容易通过继承或扩展现有的访问者接口可以很容易地增加新的操作而无需修改已有的数据结构。 各种操作行为集中访问者模式能够将对数据结构的各种操作行为集中到一个访问者类中从而便于管理和维护。 缺点 增加新的数据结构困难如果需要增加新的数据结构就需要修改所有的访问者类这可能会带来一定的复杂性和工作量。 破坏封装性访问者模式在某种程度上可能会破坏数据结构的封装性因为它要求数据结构暴露一些内部元素给访问者对象。 应用场景 对数据结构的多种操作当一个数据结构有多种不同的操作并且这些操作相互独立、频繁发生变化时可以考虑使用访问者模式。 数据结构稳定但需要增加新的操作如果数据结构相对稳定但需要经常增加新的操作访问者模式可以很好地满足这个需求。 数据结构的操作方式多样当数据结构的元素类型固定但对其进行的操作方式却多样的时候访问者模式也是一个很好的选择。 在实际项目中访问者模式常常应用于解析、转换和操作复杂的数据结构比如编译器、解释器等。另外在图形界面开发中访问者模式也可以用于对图形元素进行不同类型的操作比如绘制、计算尺寸等。此外在游戏开发中访问者模式也可以用于处理游戏中的各种角色或对象的不同行为。总的来说访问者模式适用于那些数据结构相对稳定但需要对其进行多种操作的场景能够有效地管理和扩展不同类型的操作。 后言 创作不易要是本文章对广大读者有那么一点点帮助 不妨三连支持一下您的鼓励就是博主创作的动力