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

设计模式 — — 代理模式

一、是什么

代理模式(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.lryc.cn/news/319666.html

相关文章:

  • 【高通camera hal bug分析】高通自带相机镜像问题
  • EPICS和Arduino Uno之间基于串行文本协议的控制开发
  • 数据结构的概念大合集02(线性表)
  • CSS3DRenderer, CSS3DSprite API 使用案例demo
  • 河马优化算法(HO)-2024年Nature子刊新算法 公式原理详解与性能测评 Matlab代码免费获取
  • SLAM 算法综述
  • 搭建Hadoop3.x完全分布式集群
  • linux常用命令(二)
  • 【Vue】Request模块 - axios 封装Vuex的持久化存储
  • 【2024第一期CANN训练营】4、AscendCL推理应用开发
  • Rust 构建开源 Pingora 框架可以与nginx媲美
  • MediaCodec源码分析 ACodec状态详解
  • 【Elasticsearch】windows安装elasticsearch教程及遇到的坑
  • 如何快速搭建物联网工业云平台
  • Spring Data访问Elasticsearch----Elasticsearch对象映射
  • Linux之shell循环
  • Python入门教程(一)|基本语法概述
  • Android Studio入门——页面跳转
  • 肝了三天,完成了AIGC工具网站大全,建议收藏再看
  • 算法练习:前缀和
  • Kafka MQ 生产者
  • ​​SQLiteC/C++接口详细介绍之sqlite3类(十)
  • Vue中nextTick一文详解
  • 爱奇艺 CTR 场景下的 GPU 推理性能优化
  • 详解MySql索引
  • struct 和 union 的区别?
  • Linux - 安装 Jenkins(详细教程)
  • 【JAVA】JAVA方法的学习和创造
  • Rust写一个wasm入门并在rspack和vite项目中使用(一)
  • HTTP和HTTPS的区别,HTTPS加密原理是?