2025年3月21日 星期五 甲辰(龙)年 月廿 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > 设计模式

设计模式之代理模式

时间:12-14来源:作者:点击数:12
城东书院 www.cdsy.xyz

为一个对象提供一个代用品或占位符,以便控制对它的访问

虚拟代理

  • //真正的图片
  • let myImage = (function () {
  • let imgNode = document.createElement('img');
  • document.body.appendChild(imgNode);
  • return {
  • setSrc: function (src) {
  • imgNode.src = src;
  • }
  • }
  • })();
  • //图片代理
  • let proxyImage = (function () {
  • let img = new Image;
  • img.onload = function () {
  • myImage.setSrc(this.src);
  • }
  • return {
  • setSrc: function (src) {
  • myImage.setSrc('./loading.svg');
  • img.src = src;
  • }
  • }
  • })();
  • proxyImage.setSrc('http://www.cdhrsip.com/static/imgs/high-tech/banner.png?version=201512141756');

缓存代理

  • let mult = function () {
  • console.log('开始计算乘积');
  • let a = 1;
  • for (let i = 0, l = arguments.length; i < l; i++) {
  • a = a * arguments[i];
  • }
  • return a;
  • };
  • let proxyMult = (function () {
  • let cache = {};
  • return function () {
  • let args = Array.prototype.join.call(arguments, ',');
  • if (args in cache) {
  • return cache[args];
  • }
  • return cache[args] = mult.apply(this, arguments);
  • }
  • })();
  • console.log(proxyMult(1, 2, 3, 4)); // 输出:24
  • console.log(proxyMult(1, 2, 3, 4)); // 输出:24
城东书院 www.cdsy.xyz
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐