亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

詳解javascript設計模式三:代理模式

2024-05-06 16:49:25
字體:
來源:轉載
供稿:網友

代理模式是一種對程序對象進行控制性訪問的一類解決方案。

引入代理模式,其實是為了實現單一職責的面向對象設計原則。

單一職責其實就是指在一個類中(js中通常指對象和函數等),應僅有一個引起它變化的原因。這樣會幫助程序設計具有良好的健壯和高內聚特性,從而當變化發生時,程序設計會盡量少的受到意外破壞。

代理模式有多種方法,保護代理、遠程代理、虛擬代理、緩存代理等。

但在javascript中,代理模式最常用到的兩種方法是虛擬代理和緩存代理。

虛擬代理

在理解虛擬代理時,可以將其想象為一個經紀人,客戶程序需要通過這個虛擬代理(經紀人)來調用本體對象的方法。

虛擬代理示例demo1: 圖片loading預加載

//通過虛擬代理實現圖片預加載//代理模式進行圖片預加載的實現思路是: 通過代理對象獲取實際顯示圖片地址并進行加載,同時先讓本體對象顯示預加載圖片,待代理對象將實際圖片地址加載完畢后傳遞給本體對象進行顯示即可。//本體對象var myImage = (function(){  var imgNode = new Image()  document.body.appendChild(imgNode)  return {    setSrc: function(src){      imgNode.src = src    }  }})()//代理對象var proxyImage = (function(){  var img = new Image();     //1、代理對象新建一個img對象  img.onload = function(){    //4、代理對象img加載真實圖片src完成后將src傳遞給本體對象顯示    myImage.setSrc(this.src)  }  return {    setProxySrc: function(src){      myImage.setSrc('../images/loding.gif') //2、代理對象控制本體對象使用加載圖片src      img.src = src          //3、代理對象的img對象獲取將要傳遞給本體對象的真實圖片src    }  }})()//通過代理對象來對本體對象進行訪問proxyImage.setProxySrc('https://p1.ssl.qhimgs1.com/t0153297036f4471d81.jpg')

虛擬代理示例demo2:合并HTTP請求,減少網絡請求資源消耗

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  <meta http-equiv="X-UA-Compatible" content="ie=edge">  <title>代理模式 虛擬代理合并HTTP請求</title></head><body>  <div>    <input type="checkbox" id="1" />1    <input type="checkbox" id="2" />2    <input type="checkbox" id="3" />3    <input type="checkbox" id="4" />4    <input type="checkbox" id="5" />5    <input type="checkbox" id="6" />6    <input type="checkbox" id="7" />7    <input type="checkbox" id="8" />8    <input type="checkbox" id="9" />9  </div>  </body><script>  //使用  //本體對象  var synchornurFile = function(id){    console.log('開始同步:' + id);  }  var proxySynchornurFile = (function(){    var cache = [],   //集合一段時間內需要同步的id      timer;   //定時器    return function(id){      cache.push(id)      if(timer){   //保證不會覆蓋已經啟動的定時器        return      }      timer = setTimeout(function(){        synchornurFile(cache.join(','))        clearTimeout(timer)        timer = null        cache.length = 0      }, 2000)    }  })()  var check = document.getElementsByTagName('input')  for(var i=0; i<check.length; i++){    check[i].onclick = function(){      if(this.checked === true){        proxySynchornurFile(this.id)      }    }  }</script></html>

緩存代理

緩存代理可以為一些開銷大的運算結果提供暫時存儲,在下次運算時,如果傳遞進來的參數和之前的一致,則可以直接返回前面存儲的結果

緩存代理示例demo: 計算乘積

<!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8">  <meta name="viewport" content="width=device-width, initial-scale=1.0">  <meta http-equiv="X-UA-Compatible" content="ie=edge">  <title>代理模式-緩存代理</title></head><body>  <input type="text" id="input1">*  <input type="text" id="input2">  <div id="result"></div>  <button type="button" id="btn">計算</button></body><script>  //緩存代理示例: 計算乘積  //本體對象  var calculate = function(){    var a = 1;    for(var i=0; i<arguments.length; i++){      a = a*arguments[i]    }    return a;  }  //代理對象,創建緩存代理的工廠,參數fn可以為任意需要進行代理的函數,除了上述計算乘積的本體對象函數外,還可以是計算加減或進行其他操作的本體函數  var proxyCalculate = function(fn){    var resultCache = {};    return function(){      var args = Array.prototype.join.call(arguments, ',')      if(args in resultCache){    //測試對象中是否有對應的name,有則直接返回該name的值        return resultCache[args]      }      return resultCache[args] = fn.apply(this, arguments)    }  }  document.getElementById('btn').onclick = function(){    var v1 = document.getElementById('input1').value    var v2 = document.getElementById('input2').value    var result = proxyCalculate(calculate)(v1, v2)    document.getElementById('result').innerHTML = result  }  //總結: 代理模式還有多種,比如保護代理、遠程代理等,但js中常用的代理模式有虛擬代理和緩存代理兩種。</script></html>

在編寫業務代碼時,并不需要一開始就考慮是否使用代理模式,只要當發現使用代理模式更方便時,再編寫代理對象即可。

以上所述是小編給大家介紹的javascript設計模式三:代理模式詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产免费一区二区三区在线能观看| 亚洲图片在区色| 51久久精品夜色国产麻豆| 一区二区三区在线播放欧美| 国产高清视频一区三区| 国产精品第二页| 久久视频在线免费观看| 成人激情在线播放| 久久久久久91香蕉国产| 国产精品吹潮在线观看| 国产在线不卡精品| 成人黄色在线免费| 亚洲国产成人精品女人久久久| 成人免费在线网址| 中文字幕亚洲欧美一区二区三区| 久久精品国产91精品亚洲| 久久久久久美女| 91国内免费在线视频| 夜夜躁日日躁狠狠久久88av| 性亚洲最疯狂xxxx高清| 国产精品99蜜臀久久不卡二区| 精品国产91久久久久久老师| 欧美日韩中文字幕在线| 精品中文字幕在线2019| 日韩av综合网| 亚洲日本中文字幕| 亚洲午夜女主播在线直播| 欧美日韩一区二区三区| 尤物tv国产一区| 久久乐国产精品| 国产在线999| 亚洲va男人天堂| 国产成人高潮免费观看精品| 欧美极度另类性三渗透| 在线观看久久久久久| 中文日韩在线视频| 欧美一区三区三区高中清蜜桃| 国产精品入口日韩视频大尺度| 亚洲色图激情小说| **欧美日韩vr在线| 国产精品成人在线| 国产婷婷成人久久av免费高清| 久久久久久久爱| 国产精品va在线播放| 午夜精品久久久久久久久久久久| 国模gogo一区二区大胆私拍| 国产精品草莓在线免费观看| 国产成人精品久久二区二区91| 国产精品ⅴa在线观看h| 国产精品美女午夜av| 国产精品稀缺呦系列在线| 国产欧亚日韩视频| 97久久精品国产| 亚洲bt天天射| 国产精品精品久久久久久| 亚洲成人精品在线| 久久久久日韩精品久久久男男| 98精品国产自产在线观看| 亚洲欧美制服丝袜| 久久精品人人爽| 国外成人性视频| 亚洲18私人小影院| 韩国三级日本三级少妇99| 亚洲国产欧美自拍| 国产欧美一区二区三区久久人妖| 久久久久亚洲精品| 91免费综合在线| 一区二区三区日韩在线| 日韩成人av一区| 中文字幕日韩精品在线| 国产日韩专区在线| 日韩av在线电影网| 中文字幕亚洲综合久久筱田步美| 欧洲精品久久久| 8090成年在线看片午夜| 欧美视频中文字幕在线| 亚洲人成在线观| 亚洲另类xxxx| 这里只有精品视频在线| 欧美激情视频免费观看| 精品国产自在精品国产浪潮| 精品国产乱码久久久久酒店| 成人免费看黄网站| 国产精品美女久久久久久免费| 中文字幕欧美精品在线| 国产一区二区三区精品久久久| 国产亚洲日本欧美韩国| 欧美精品www在线观看| 国产在线观看精品| 精品国产999| 亚洲电影免费观看高清完整版| 精品福利在线观看| 色噜噜狠狠狠综合曰曰曰| 国产精品日韩av| 欧美成人精品激情在线观看| 国产欧美精品久久久| 亚洲精品国偷自产在线99热| 成人乱色短篇合集| 成人字幕网zmw| 国产91精品高潮白浆喷水| 亚洲黄在线观看| 久久精品人人做人人爽| 自拍偷拍亚洲区| 色综合久久88| 国产亚洲精品美女| 欧美午夜性色大片在线观看| 成人黄色免费网站在线观看| 亚洲少妇中文在线| 亚洲国产毛片完整版| 最好看的2019的中文字幕视频| 国产一区视频在线播放| 欧美疯狂性受xxxxx另类| 亚洲最大激情中文字幕| 国产日韩综合一区二区性色av| 日韩精品999| 国产精品久久久久久久久粉嫩av| 黑人极品videos精品欧美裸| 中文字幕亚洲欧美在线| 91免费精品国偷自产在线| 91美女福利视频高清| 国产精品高清免费在线观看| 国产精品成人va在线观看| 欧美亚洲视频在线看网址| 亚洲欧美中文日韩在线v日本| 久久成人人人人精品欧| 日本19禁啪啪免费观看www| 久久综合电影一区| 日本免费一区二区三区视频观看| 久久精品成人一区二区三区| 福利微拍一区二区| 中文字幕精品av| 亚洲在线视频观看| 亚洲国产古装精品网站| 国产精品免费久久久久影院| 国产成人综合精品| 亚洲18私人小影院| 九九精品视频在线| 国产精品视频在线观看| 欧洲日本亚洲国产区| 日韩久久精品电影| 中文字幕成人精品久久不卡| 国产成人精品日本亚洲专区61| 最近2019中文免费高清视频观看www99| 日本精品久久久久久久| 亚洲最大在线视频| 清纯唯美亚洲综合| 久久影视电视剧免费网站| 国产精品久久久久免费a∨大胸| 国产成人短视频| 性色av香蕉一区二区| 尤物精品国产第一福利三区| 国产一区二区美女视频| 日韩av在线网页| 日韩欧美在线视频| 高清欧美性猛交| 国产91精品在线播放| 中文字幕亚洲情99在线| 国产亚洲精品久久久久久| 欧美大全免费观看电视剧大泉洋| 奇米一区二区三区四区久久| 亚洲欧美自拍一区| 色综合导航网站| 日韩亚洲在线观看| 国产精品久久999|