
js代理模式理解和应用场景
发布日期:2021-05-07 09:30:34
浏览次数:22
分类:精选文章
本文共 1791 字,大约阅读时间需要 5 分钟。
文章目录
代理模式的理解
Proxy(代理模式):为其他对象提供一种代理以控制这个对象的访问
- 使用者无权访问目标对象
- 中间加代理,通过哦代理做授权和控制
比方:比如买火车票这件小事:黄牛相当于是我们本人的的代理,我们可以通过黄牛买票。通过黄牛买票,我们可以避免与火车站的直接交互,可以省很多事,并且还能享受到黄牛更好的服务(如果钱给够的话)
类图
传统类图
简化js类图
js代码
class Realimg{ constructor(fileName){ this.fileName = fileName this.load() } display(){ console.log(`this is ${ this.fileName}`); } loda(){ console.log(`loading...${ this.fileName}`); }}class ProxyImg{ constructor(fileName){ this.proxy = new Realimg(fileName) } display(){ this.proxy.display() }}const proxyImg = new ProxyImg('libi.jpg')proxyImg.display()
代理模式在前端的使用场景
网页事件代理
注意这里的target,nodeName得到的标签名是大写表示的
jQuery的$.proxy
ES6的Proxy语法
点击下面链接快速理解Proxy
下面用此语法模拟了一个场景,想要找明星出演,不能直接要到明星的电话,只能要到经济人的电话,出演的报价也是经纪人所决定的,
const actor = { name:'JkChen', phone:'12312312333',}const agent = new Proxy(actor,{ get(target,key){ if(key === 'phone'){ return 'agent 111111111111' } if(key === 'price'){ return 2 } return target[key] }, set(target,key,value){ if(key === 'setPrice' && value < 2){ console.log('请不起'); }else{ console.log('钱够了,明星来了'); target[key] = value return true } } })console.log(agent.name);console.log(agent.phone);console.log(agent.price);agent.setPrice = 1
总结
- 当代理类和目标类的分离,隔离开目标类和使用者,需要解决解决一些代理和授权问题时
- 此设计模式符合开放封闭原则,隔离解耦
发表评论
最新留言
很好
[***.229.124.182]2025年04月10日 11时48分09秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
.NetCore外国一些高质量博客分享
2021-05-09
Mysql的基本操作(一)增、删、改
2021-05-09
解决WebRTC中不同的浏览器之间适配的问题
2021-05-09
python中while循环和for循环的定义和详细的使用方法
2021-05-09
HTML5 之拖放(drag与drop)
2021-05-09
软件项目技术点(2)——Canvas之坐标系转换
2021-05-09
深入理解JavaScript函数
2021-05-09
!function(){}()
2021-05-09
【spring源码系列】之【xml解析】
2021-05-09
用了这个jupyter插件,我已经半个月没打开过excel了
2021-05-09
(在模仿中精进数据可视化07)星球研究所大坝分布可视化
2021-05-09
(数据科学学习手札02)Python与R在循环语句与条件语句上的异同
2021-05-09
(数据科学学习手札06)Python在数据框操作上的总结(初级篇)
2021-05-09
(数据科学学习手札23)决策树分类原理详解&Python与R实现
2021-05-09
(数据科学学习手札27)sklearn数据集分割方法汇总
2021-05-09
(数据科学学习手札40)tensorflow实现LSTM时间序列预测
2021-05-09
[整理] 哪些集合类是线程安全的?(Java)
2021-05-09
[整理] UML的各种图总结
2021-05-09
8 个警示和学习的 5 个阶段
2021-05-09
c# 图片带水纹波动
2021-05-09