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

首頁 > 編程 > JavaScript > 正文

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

2019-11-19 11:57:00
字體:
來源:轉載
供稿:網友

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

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

單一職責其實就是指在一個類中(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設計模式三:代理模式詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色吧影院999| 亚洲天堂久久av| 国产精品日韩电影| 伊人伊成久久人综合网小说| 91极品视频在线| 久久国产精彩视频| 国产精品pans私拍| 国产精品久久久久久久7电影| 亚洲美女性生活视频| 欧美日韩国产一区二区三区| 色综合久综合久久综合久鬼88| 亚洲国产欧美日韩精品| 色哟哟入口国产精品| 国产精品99久久久久久白浆小说| 亚洲国产精品推荐| 国产精品久久一区主播| 国产一区二区三区丝袜| 91精品国产自产在线老师啪| 成人av电影天堂| 色爱精品视频一区| 福利视频一区二区| 国产成人av网| 91沈先生在线观看| 欧洲日本亚洲国产区| 日韩在线观看免费网站| 欧美性猛交xxxx黑人猛交| 欧美怡红院视频一区二区三区| 国产mv久久久| 亚洲国产精品视频在线观看| 亚洲激情视频网| 91成人福利在线| 欧美成人免费一级人片100| 日韩一中文字幕| 色妞色视频一区二区三区四区| 国产精品久久在线观看| 亚洲一区亚洲二区亚洲三区| 日韩综合中文字幕| 亚洲精品一区二区网址| 欧美在线视频免费播放| 欧美激情综合色综合啪啪五月| 欧美丰满少妇xxxx| 亚洲色图综合网| 国内精品久久久久影院优| 国产精品盗摄久久久| 欧美成人亚洲成人日韩成人| 国产精品尤物福利片在线观看| 亚洲综合中文字幕在线观看| 在线电影欧美日韩一区二区私密| 欧美精品第一页在线播放| 欧美电影在线观看| 国产精品一区二区久久精品| 久久综合久中文字幕青草| 日产日韩在线亚洲欧美| 久久综合国产精品台湾中文娱乐网| 欧美一区在线直播| 91产国在线观看动作片喷水| 亚洲一区二区三区在线免费观看| 久久av中文字幕| 4444欧美成人kkkk| 45www国产精品网站| 97国产精品久久| 国产欧美精品一区二区三区-老狼| 日韩欧美国产免费播放| 亚洲精品大尺度| 97超级碰在线看视频免费在线看| 国产精品丝袜一区二区三区| 日本国产精品视频| 精品国内亚洲在观看18黄| 欧美理论片在线观看| 久久视频这里只有精品| 浅井舞香一区二区| 久久不射热爱视频精品| 国产suv精品一区二区三区88区| 亚洲自拍偷拍网址| 欧美成aaa人片在线观看蜜臀| 国产日韩在线免费| 69**夜色精品国产69乱| 国产精品视频不卡| 久久人人爽人人爽爽久久| 国产欧美日韩亚洲精品| 亚洲女人被黑人巨大进入| 日韩av网站电影| 久久99国产精品自在自在app| 91av视频在线观看| 欧美大尺度在线观看| 精品国内产的精品视频在线观看| 日韩最新中文字幕电影免费看| 国产在线播放91| 久久精品国产96久久久香蕉| 国产日韩换脸av一区在线观看| 日韩高清av一区二区三区| 欧美丰满少妇xxxxx| 国产激情久久久| 亚洲国模精品私拍| 国产精品www色诱视频| 欧美日韩国内自拍| 精品久久久一区| 欧美午夜影院在线视频| 深夜福利日韩在线看| 久久在线精品视频| 日韩高清免费在线| 国产成人91久久精品| 亚洲欧洲午夜一线一品| www.欧美三级电影.com| 欧美亚洲在线视频| 亚洲人成网站免费播放| 国产成人91久久精品| 久久久久亚洲精品| 欧美精品一区二区免费| 亚洲一区二区免费在线| 欧美性xxxxx极品娇小| 成人免费网站在线观看| 日韩大陆毛片av| 久久久久久久国产精品| 俺也去精品视频在线观看| 成人亚洲欧美一区二区三区| 91性高湖久久久久久久久_久久99| 欧美激情在线观看视频| 国产福利精品视频| 久久久欧美一区二区| 成人美女av在线直播| 国产精品视频专区| 国内精品400部情侣激情| 欧美性jizz18性欧美| 国产精品中文字幕在线观看| 亚洲人成在线一二| 欧美日韩国产精品| 久久久久久久久久亚洲| 精品免费在线观看| 亚洲精品久久久久久久久久久久| 亚洲精品第一页| 亚洲性视频网址| 深夜精品寂寞黄网站在线观看| 久久免费精品视频| 久久久久久久久久婷婷| 中文字幕亚洲欧美日韩在线不卡| 欧美中文在线免费| 国产日韩在线观看av| 国产精品爽爽爽爽爽爽在线观看| 久久这里只有精品视频首页| 欧美日韩国产麻豆| 中文字幕成人精品久久不卡| 欧美一级片在线播放| 亚洲美女喷白浆| 亚洲欧美国产日韩天堂区| 久久频这里精品99香蕉| 性色av香蕉一区二区| 黑人欧美xxxx| 2019最新中文字幕| 日韩电影免费观看在线| 亚洲天堂免费观看| 少妇高潮 亚洲精品| 久久久精品影院| 日本不卡高字幕在线2019| 亚洲人成自拍网站| 久久久久久久91| 亚洲91av视频| 亚洲福利视频网站| 国产亚洲一区二区精品| 国产在线观看精品一区二区三区| 欧美wwwxxxx| 伊人成人开心激情综合网| 91精品国产91久久久久久不卡| 亚洲电影免费观看高清完整版|