欢迎光临散文网 会员登陆 & 注册

【D1n910】第 22 章 访问者模式 《JavaScript 设计模式》

2021-03-03 11:50 作者:爱交作业的D1N910  | 我要投稿

正常操作,正常分析,大家好,我是D1n910。


今天我继续来学习 《JavaScript 设计模式》的第四篇 行为型设计模式


这是一个连续的读书笔记,所以如果你之前的内容没有看的话,可以去看看(建议直接看书,当然书的例子都比较早了,是2015年之前的代码内容,过了六年了,前端发展了很多,比如类的声明可以直接用 Class 了)。


直接查看目录就可以查看到所有的系列文章啦。




这里再次感谢 《Javascript 设计模式》及其作者 张荣铭,专栏内容是在它的基础上生成的。


现在会觉得很多设计模式离我们有点遥远,是因为我们现在都在用大佬写好的框架吧,很多设计模式都包含在框架里了。


后面有机会的话,我希望我可以查看目前主流框架的源代码,然后进行讲解。


对应的代码,请查看

https://github.com/D1N910/JavaScript-design-patterns.git



第四篇 行为型设计模式

行为型设计模式用于不同对象之间职责划分或算法抽象,行为型设计模式不仅仅涉及类和对象,还涉及类或对象之间的交流模式并加以实现。


第 22 章  访问者模式(P152)


访问者模式(Visitor):针对于对象结构中的元素,定义在不改变改对象的前提下访问结构中元素的新方法。


Object.prototype.toString就是使用了访问者模式的设计。


我们可以利用 Object.prototype.toString 和 call 很方便地判断数据类型。



对象访问器

数组类型的数据有自带的原生方法,可以进行截取 splice、追加数据 push、弹出最后一个元素 pop。


考虑通过访问者模式,实现对象也能够调用数组的这些方法。


首先我们要知道,函数内部隐式变量 arguments 以数组的形式存储了外部传参。



首先创建我们的对象访问器。



编写截取splice方法:

参考数组的 splice 的调用,数组数据.splice(起始下标,截取第x个的下标,用以替换的数据)。

那么我们截取方法如下。

这里的 arguments[0] 是我们操作的对象,args 是除了操作对象以外可能的传参。


编写新增push方法:

新增的时候,我们要获得 arguments 上的添加参数,所以我们可以调用刚刚创建好的 splice 来获得。

这边记得更新length。


弹出最新加的一个就比较简单了。

使用方法:



访问者模式主要就是非常灵活,解决数据与数据操作方法之间的耦合。


本章 End

d1n910 于 2021年03月03日 写于南山后海




【D1n910】第 22 章 访问者模式 《JavaScript 设计模式》的评论 (共 条)

分享到微博请遵守国家法律