JavaScript设计模式中代理模式的使用方法
Posted 三水草肃
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript设计模式中代理模式的使用方法相关的知识,希望对你有一定的参考价值。
代理模式
代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问
保护代理和虚拟代理
-
保护代理:代理逻辑可以帮助原函数过滤掉一些不好的请求
- 保护代理用于控制不同权限的对象对目标的访问,但是在 javascript 并不容易实现保护代理,因为我们无法判断谁访问了某个对象。
-
虚拟代理:延迟到需要它的时候才去创建
-
场景
- 虚拟代理实现图片预加载 1. Web 开发中,图片预加载是一个常用的技术,如果直接给某个 img 标签节点设置 src 属性,由于图片过大或者网络不佳,图片的位置往往有段时间是空白的。常见的做法使用一张 loading 图片占位,然后用异步的方式加载图片,等图片加载好了再把它填充到 img 节点里。
const myImage = (function () const Image = document.createElement("img"); document.body.appendChild(Image); return setSrc: function (src) Image.src = src; , ; )(); // 加一层代理,在图片加载前先展示x.jpg const proxyImage = (function () const img = new Image(); img.onload = function (src) myImage(this.src); ; return function () myImage("./logo192.png"); img.src = src; ; )(); proxyImage();
- 图片预加载不使用任何设计模式也能办到,下面来讲讲使用代理模式的好吃,
- 符合单一职责原则:就一个类(包括对象和函数),应该仅有一个引起它变化的原因。如果一个对象承担了多项职责,就意味着这个对象将变得巨大,引起它变化的原因可能会有多个。如果一个对象承担的职责过多,职责耦合在一起,这种耦合会导致脆弱的设计。
- 便于后期的维护,如果后期不需要图片预加载,我们只需要修改请求本地,不使用代理请求本地。
- 符合开放-封闭原则
-
以上是关于JavaScript设计模式中代理模式的使用方法的主要内容,如果未能解决你的问题,请参考以下文章