设计模式 — — 代理模式

一、是什么

代理模式(Proxy Pattern)是为一个对象提供一个代用品或占位符,以便控制对它的

生活场景:

租房、买房,比如链家等房屋中介机构,起到的作用就是代理

二、使用

const proxy = new Proxy(target, handler);

按照功能来划分,js代理模式常见:

  • 缓存代理
  • 虚拟代理
1、缓存代理

缓存代理可以为一些开销大的运算结果提供暂时的存储,在下次运算时,如果传递进来的参数跟之前一致,则可以直接返回前面存储的运算结果

2、虚拟代理

虚拟代理把一些开销很大的对象,延迟到真正需要它的时候才去创建,常见的就是图片预加载功能

// 图片本地对象,负责往页面中创建一个img标签,并且提供一个对外的setSrc接口
let myImage = (function(){let imgNode = document.createElement( 'img' );document.body.appendChild( imgNode );return {//setSrc接口,外界调用这个接口,便可以给该img标签设置src属性setSrc: function( src ){imgNode.src = src;}}
})();
// 代理对象,负责图片预加载功能
let proxyImage = (function(){// 创建一个Image对象,用于加载需要设置的图片let img = new Image;img.onload = function(){// 监听到图片加载完成后,给被代理的图片本地对象设置src为加载完成后的图片myImage.setSrc( this.src );}return {setSrc: function( src ){// 设置图片时,在图片未被真正加载好时,以这张图作为loading,提示用户图片正在加载myImage.setSrc( 'https://img.zcool.cn/community/01deed576019060000018c1bd2352d.gif' );img.src = src;}}
})();proxyImage.setSrc( 'https://xxx.jpg' );
  • 使用代理模式后,图片本地对象负责往页面中创建一个img标签,并且提供一个对外的setSrc接口;

  • 代理对象负责在图片未加载完成之前,引入预加载的loading图,负责了图片预加载的功能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/741057.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SAMD21G17D的触摸滑条USB HID设备实现及控制PC音量的功能开发(USB HID+MPLAB)

https://www.bilibili.com/video/BV1dr421H7yPTOC 👉 【2024年寒假练】基于SAMD21G17D的触摸滑条USB HID控制PC音量快捷键的功能开发 👉 Github: EmbeddedCamerata/SAMD21_touchbar_usb_hid 项目介绍 本项目基于 Microchip 的 SAMD21 Curiosity Nano 核…

【Python-Pandas】删除带有NaN的行

data.Frame删除带有NaN的行 sample_raw.dropna(axis0, inplaceTrue)axis :为0,表示行。 inplace :为True,表示覆盖原数据。

深入理解快速排序

一、快速排序 快速排序是冒泡排序的一种改进算法,相比于冒泡排序效率更优。 算法过程分析: 通过采用分治策略,围绕一个 x 将原始数组划分为两个子数组,使得前一个子数组的元素≤ x ≤ 后一个子数组元素,对两个子数组进…

C语言练习题day3

编写一个程序给定两个数字(每个数字均为2位数),根据要求获得新数 并完成打印 新数的千位是第一个数的个位 新数的百位是第一个数的十位 新数的十位是第二个数的十位 新数的个位是第二个数的个位 #include<stdio.h>int main(void…

WebGIS开发0基础必看教程:鹰眼的实现思路

1.背景 鹰眼功能是WebGIS中的一种常见功能&#xff0c;利用一些开源的框架实现起来非常方便。当然&#xff0c;按照博主从底层谈WebGIS这套系列的风格&#xff0c;在这里还是跟大家一起探讨探讨不借助第三方框架开发鹰眼的简单实现思路。 2.鹰眼功能分析 3.实现思路设计 3.1…

C++内存对齐知识点总结

什么是内存对齐 理论上&#xff1a;32位系统&#xff1a;int 4字节&#xff0c;char1字节 现代计算机内存空间都是按照字节划分的。理论上计算机系统对基本类型数据在内存的变量的访问可以从任何地址开始&#xff0c;但是时机的计算机系统对基本类型的数据在内存中存放的位置是…

C语言 - 堆栈二叉树的基础及应用

1.历史 堆栈是为了减少程序内存占用的问题而发明的 机器上电后&#xff0c;所有的变量都需要copy到内存中运行&#xff0c;但是机器的内存大小一直都是比较有限的&#xff0c;所以堆栈和局部变量两个概念被提出来 2.栈 每次手动创建、删除变量非常麻烦&#xff0c;于是…

OpenCV-图像基础处理

目录 1 彩色&#xff08;RGB&#xff09;图像 2 灰度图像 3 黑白图像 1 彩色&#xff08;RGB&#xff09;图像 使用cv2.imread()函数加载RGB图像&#xff1b;使用cv2.split()函数分割颜色通道&#xff1b;将BGR颜色格式转换成RGB颜色格式&#xff1b;使用matplotlib或cv2.i…

【spring】@Bean注解学习

Bean介绍 Bean用于指示一个方法应该产生一个Bean对象&#xff0c;并将其交给Spring容器管理。 当使用Bean注解的方法被Spring容器调用时&#xff0c;它只会执行一次&#xff0c;随后该方法返回的Bean对象会被添加到Spring的IOC&#xff08;Inversion of Control&#xff0c;控…

【C#】【SAP2000】读取SAP2000中单元截面信息和几何信息到Grasshopper中

if (build true){// 声明变量int ret;int Numit 0;int[] ObjType new int[0];string[] ObjName new string[0];string sauto "";string propname "";string point1 "";string point2 "";double x1 0;double y1 0;double z1 …

静电ESD整改:原因、影响与解决方案详解?|深圳比创达电子

静电&#xff08;ESD&#xff09;是在日常生活和工作中常见的现象&#xff0c;但它可能对电子设备和器件造成严重的损坏。本文将介绍静电ESD的定义、原因、影响以及解决方案&#xff0c;帮助大家更好地了解ESD问题&#xff0c;并采取相应的整改措施。 一、静电ESD的定义 静电…

计算机网络 应用层的考纲内容 网络应用模型 域名系统

包括&#xff0c; 1&#xff0c;网络应用模型&#xff0c;包括&#xff1a;客户/服务器模型&#xff1b;P2P模型。 2&#xff0c;域名系统DNS&#xff0c;层次域名空间&#xff0c;域名服务器&#xff0c;域名解析过程。 3&#xff0c;文件传输协议&#xff0c;FTP&#xff…

基础的正则表达式

正则表达式&#xff08;Regular Expression&#xff0c;简称正则或RegExp&#xff09;是用于匹配字符串中字符组合的表达式。它是一种强大的工具&#xff0c;可以用于搜索、替换和提取字符串中的文本。 正则表达式由字符和操作符构成&#xff0c;用于描述字符串模式。以下是一些…

LeetCode1.两数之和

LeetCode第一题&#xff0c;两数之和 因为是第一题所以热度比较高&#xff0c;有很多种解法 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应…

L2-4 寻宝图(Python3)

给定一幅地图&#xff0c;其中有水域&#xff0c;有陆地。被水域完全环绕的陆地是岛屿。有些岛屿上埋藏有宝藏&#xff0c;这些有宝藏的点也被标记出来了。本题就请你统计一下&#xff0c;给定的地图上一共有多少岛屿&#xff0c;其中有多少是有宝藏的岛屿。 输入格式&#xf…

Python Excel 文本编辑库之xlsxwriter使用详解

概要 在现代数据处理和报表生成中,Excel 文件是一个非常常见的格式。Python XlsxWriter 库是一个强大的工具,可以帮助开发者轻松创建和编辑 Excel 文件,并且具有高度的灵活性和可定制性。本文将全面介绍 XlsxWriter 库的原理、功能、用法,并通过丰富的示例代码来展示其强大…

什么是工业数采网关?如何远程数采?

随着工业自动化的不断发展&#xff0c;数据采集与远程控制成为了生产过程中不可或缺的一环。而工业数采网关&#xff0c;作为连接工业设备与上位管理系统之间的桥梁&#xff0c;扮演着越来越重要的角色。HiWoo Box 作为一款优秀的工业数采网关产品&#xff0c;为 PLC、传感器、…

AI大语言模型GPT R 生态环境领域数据统计分析

自2022年GPT&#xff08;Generative Pre-trained Transformer&#xff09;大语言模型的发布以来&#xff0c;它以其卓越的自然语言处理能力和广泛的应用潜力&#xff0c;在学术界和工业界掀起了一场革命。在短短一年多的时间里&#xff0c;GPT已经在多个领域展现出其独特的价值…

小脑萎缩患者的饮食秘籍,让生活更加精彩!

在面对小脑萎缩这一挑战时&#xff0c;正确的饮食习惯能够为患者带来巨大的改变。今天&#xff0c;让我们一起探索如何通过饮食的力量&#xff0c;帮助小脑萎缩患者改善生活质量&#xff0c;让每一天都充满希望和活力&#xff01; 小脑萎缩患者的饮食应以均衡为原则&#xff0…

软raid sync_action

控制节点&#xff1a; /sys/block/md127/md/sync_action内核是怎么实现的&#xff0c;为什么mdadm管理命令仅支持四种&#xff1f; [rootgitclient ~]# mdadm --action --help mdadm: action must be one of idle, frozen, check, repair内核文档是怎么描述这个节点&#xff…