当前位置: 首页 > news >正文

前端设计模式之【代理模式】

文章目录

  • 前言
  • 介绍
  • 例子
  • 场景
  • 优缺点
  • 标题五
  • 后言

前言

hello world欢迎来到前端的新世界


😜当前文章系列专栏:前端设计模式
🐱‍👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技术短板。(如果出现错误,感谢大家指出)🌹
💖感谢大家支持!您的观看就是作者创作的动力

介绍

是为一个对象提供一个代用品或占位符,以便控制对它的访问,充当客户端和目标对象之间的中间层,控制对目标对象的访问。前端代理可以用于各种不同的场景,包括安全控制、性能优化和简化复杂性等方面。

使用前端代理模式时,客户端并不直接与目标对象进行交互,而是通过代理来间接访问目标对象。代理可以对客户端的请求进行过滤、验证和一些额外的操作,然后再将请求传递给目标对象。这种方式可以有效地保护目标对象,同时也可以在访问前后实现一些附加的操作,如权限验证、缓存、延迟加载等。

例子

假设当A 在心情好的时候收到花,小明表白成功的几率有60%,而当A 在心情差的时候收到花,小明表白的成功率无限趋近于0。小明跟A 刚刚认识两天,还无法辨别A 什么时候心情好。如果不合时宜地把花送给A,花被直接扔掉的可能性很大,这束花可是小明吃了7 天泡面换来的。但是A 的朋友B 却很了解A,所以小明只管把花交给B,B 会监听A 的心情变化,然后选择A 心情好的时候把花转交给A,代码如下:

let Flower = function() {}
let xiaoming = {sendFlower: function(target) {let flower = new Flower()target.receiveFlower(flower)}
}
let B = {receiveFlower: function(flower) {A.listenGoodMood(function() {A.receiveFlower(flower)})}
}
let A = {receiveFlower: function(flower) {console.log('收到花'+ flower)},listenGoodMood: function(fn) {setTimeout(function() {fn()}, 1000)}
}
xiaoming.sendFlower(B)

场景

HTML元素事件代理

<ul id="ul"><li>1</li><li>2</li><li>3</li>
</ul>
<script>let ul = document.querySelector('#ul');ul.addEventListener('click', event => {console.log(event.target);});
</script>

优缺点

优点

  • 代理模式能将代理对象与被调用对象分离,降低了系统的耦合度。代理模式在客户端和目标对象之间起到一个中介作用,这样可以起到保护目标对象的作用
  • 代理对象可以扩展目标对象的功能;通过修改代理对象就可以了,符合开闭原则;

缺点

处理请求速度可能有差别,非直接访问存在开销

标题五

后言

创作不易,要是本文章对广大读者有那么一点点帮助 不妨三连支持一下,您的鼓励就是博主创作的动力

http://www.lryc.cn/news/236494.html

相关文章:

  • Canal+Kafka实现MySQL与Redis数据同步(二)
  • NOIP2023模拟19联测40 诡异键盘
  • 算法设计与分析 | 众数问题(c语言)
  • sql server外键设置
  • R语言实现多变量孟德尔随机化分析(1)
  • 搭建 AI 图像生成器 (SAAS) php laravel
  • Maven引用本地jar包
  • 一起学docker系列之五docker的常用命令--操作容器的命令
  • WPF打开对话框选择文件、选择文件夹
  • nginx学习(3)
  • 【系统架构设计】计算机公共基础知识: 4 数据库系统
  • 主键问题以及分布式 id
  • ReentranReadWriteLock 使用案例
  • “我们把最扎心的话,说给了自己最亲近的人” 何解?| IDCF
  • MongoDB之索引和聚合
  • 【GEE】基于GEE进行非监督学习
  • 多视图聚类的论文阅读(一)
  • K-Means算法进行分类
  • 深度学习交通车辆流量分析 - 目标检测与跟踪 - python opencv 计算机竞赛
  • 网络协议入门 笔记一
  • 系列十一、你平时工作用过的JVM常用基本配置参数有哪些?
  • 如何为视频添加旁白,有哪些操作技巧?
  • 如何简单挖掘公益SRC?
  • PhpStorm激活
  • mysql 怎么做定时备份 / mysql 备份 / sql文件导出
  • 416. 分割等和子集问题(动态规划)
  • 【软件安装】Centos系统中安装docker容器(华为云HECS云耀服务器)
  • GitHub Proxy 快速下载github文件
  • 大厂秋招真题【栈】Bilibili2019秋招-简单表达式求值
  • (一)RISC-V 指令集及寄存器介绍