web前端全系列 教程
1839个小节阅读:2244.3k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
代理,顾名思义就是帮助别⼈做事,代理模式(Proxy),为其他对象提供⼀种代理以控制对这个对象的访问。
代理模式⾮常有意义,在⽣活中可以找到很多代理模式的场景,例如:明星都会有经纪⼈作为代理,如果想请明星做事情,要先找到他的经纪⼈,然后和经纪⼈把报酬和时间等细节都谈好了,再把商量好的合同给到明星签署。
代理模式多⽤于懒加载,合并请求和缓存等。
xxxxxxxxxx
241class MyImage {
2 constructor() {
3 this.img = new Image()
4 document.body.appendChild(this.img)
5 }
6 setSrc(src) {
7 this.img.src = src
8 }
9}
10class ProxyImage {
11 constructor() {
12 this.proxyImage = new Image()
13 }
14 setSrc(src) {
15 let myImageObj = new MyImage()
16 myImageObj.img.src = 'file://xxx.png' //为本地图⽚url
17 this.proxyImage.src = src
18 this.proxyImage.onload = function() {
19 myImageObj.img.src = src
20 }
21 }
22}
23var proxyImage = new ProxyImage()
24proxyImage.setSrc('http://xxx.png') //服务器资源url
本例中,本体类中有⾃⼰的setSrc⽅法,如果有⼀天⽹络速度已经不需要预加载了,我们可以直接使⽤本体对象的setSrc⽅法,,并且不需要改动本体类的代码,⽽且可以删除代理类。
xxxxxxxxxx
31// 依旧可以满⾜需求
2var myImage = new MyImage()
3myImage.setSrc('http://xxx.png')
代理模式符合开放封闭原则 本体对象和代理对象拥有相同的⽅法,在⽤户看来并不知道请求的本体对象还是代理对象。