最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript設計模式 – 代理模式原理與用法實例分析

 更新時間:2020年04月16日 08:35:36   作者:李小強  
這篇文章主要介紹了javascript設計模式 – 代理模式,結合實例形式分析了javascript代理模式相關概念、原理、用法及操作注意事項,需要的朋友可以參考下

本文實例講述了javascript設計模式 – 代理模式原理與用法。分享給大家供大家參考,具體如下:

介紹:代理使我們很常見的一眾模式,proxy,nginx都稱之為代理,代理是什么意思呢?代理模式在客戶端和目標對象之間加入一個新的代理對象,代理對象起到一個中介作用,去掉客戶不能看到的內(nèi)容和服務,或者增添客戶需要的額外服務。

定義:給某一個對象提供一個代理,并由代理對象控制對原對象的引用。代理模式是一種對象結構型模式。

場景:我們還是以畫圖形為例,我將所有的繪圖動作包裝到Shape類中,使用代理模式來部分開放功能給客戶。

示例:

var Shape = function(color){
  console.log('創(chuàng)建了一個對象');
  this.color = color;
  this.x;
  this.y;
  this.radius;
 
  this.setAttr = function(x, y, radius){
    this.x = x;
    this.y = y;
    this.radius = radius;
  }
  this.drawCircle = function(){
    console.log('畫圓: 顏色:' + this.color + ' x:' + this.x + ' y:' + this.y + ' radius:' + this.radius)
  }
  this.drawSquare = function(){
    console.log('畫方: 顏色:' + this.color + ' x:' + this.x + ' y:' + this.y )
  }
  this.drawTriangle = function(){
    console.log('畫三角: 顏色:' + this.color + ' x:' + this.x + ' y:' + this.y )
  }
}
 
var proxyShape = function(color, x, y, radius){
  this.color = color;
  this.x = x;
  this.y = y;
  this.radius = radius;
  this.shape = null;
  this.drawSquare = function(){
    if(this.shape === null){
      this.shape = new Shape(this.color);
      this.shape.setAttr(this.x, this.y, this.radius);
    }
    this.shape.drawSquare();
  }
}
 
var square = new proxyShape('red', 10, 10);
square.drawSquare();
square.drawSquare();
// 創(chuàng)建了一個對象
// 畫方: 顏色:red x:10 y:10
// 畫方: 顏色:red x:10 y:10

你可以在proxyShape中增加一些日志,權限等任務。因為代理類的存在,新增的任務不會影響到Shape類。

代理模式為對象的簡介訪問提供了解決方案,可以對對象的訪問進行控制。

代理模式總結:

優(yōu)點:
* 代理模式可以協(xié)調(diào)調(diào)用者和被調(diào)用這,一定程度降低了系統(tǒng)耦合度。

缺點:
* 由于增加了代理對象,因此有些類型的代理模式可能會造成請求的處理速度變慢。
* 實現(xiàn)代理模式需要額外的工作,有些代理模式的實現(xiàn)非常復雜。

適用場景:
* 當客戶端需要訪問遠程主機中的對象時,可以使用遠程代理。
* 當需要用一個消耗資源較少的對象來代表資源消耗較多的對象,可以使用虛擬代理
* 當需要控制一個對象的訪問,為不同用戶提供不同級別的訪問權限時可以使用保護代理

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。

更多關于JavaScript相關內(nèi)容感興趣的讀者可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript錯誤與調(diào)試技巧總結》、《JavaScript數(shù)據(jù)結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數(shù)學運算用法總結

希望本文所述對大家JavaScript程序設計有所幫助。

相關文章

  • javascript獲取wx.config內(nèi)部字段解決微信分享

    javascript獲取wx.config內(nèi)部字段解決微信分享

    這篇文章主要介紹了javascript獲取wx.config內(nèi)部字段解決微信分享,需要的朋友可以參考下
    2016-03-03
  • JavaScript簡單實現(xiàn)彈出拖拽窗口(二)

    JavaScript簡單實現(xiàn)彈出拖拽窗口(二)

    這篇文章再次為大家詳細介紹了JavaScript簡單實現(xiàn)彈出拖拽窗口的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Layui實現(xiàn)帶查詢條件的分頁

    Layui實現(xiàn)帶查詢條件的分頁

    這篇文章主要為大家詳細介紹了Layui實現(xiàn)帶查詢條件的分頁,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • JS中的async與await怎么使用

    JS中的async與await怎么使用

    這篇文章主要介紹了JS的async/await怎么使用,簡單來說,async/await是基于promises的語法糖,使異步代碼更易于編寫和閱讀,下面來看詳細的介紹內(nèi)容吧。需要的小伙伴也可以參考一下
    2021-12-12
  • Javascript中的幾種URL編碼方法比較

    Javascript中的幾種URL編碼方法比較

    這篇文章主要介紹了Javascript中的幾種URL編碼方法比較,本文對比了escape()、encodeURI()以及encodeURIComponent()這3種URL編碼方法,需要的朋友可以參考下
    2015-01-01
  • 簡易的投票系統(tǒng)以及js刷票思路和方法

    簡易的投票系統(tǒng)以及js刷票思路和方法

    這篇文章主要介紹了簡易的投票系統(tǒng)以及js刷票思路和方法,文章十分的詳盡,思路也很清晰,是篇非常不錯的文章,這里推薦給大家,有需要的小伙伴可以參考下。
    2015-04-04
  • Swiper實現(xiàn)輪播圖效果

    Swiper實現(xiàn)輪播圖效果

    這篇文章主要為大家詳細介紹了Swiper實現(xiàn)輪播圖效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • uniapp?實現(xiàn)自定義縮略滾動條效果

    uniapp?實現(xiàn)自定義縮略滾動條效果

    這篇文章主要介紹了uniapp?實現(xiàn)自定義縮略滾動條,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-08-08
  • wavesurfer.js繪制音頻波形圖的實現(xiàn)

    wavesurfer.js繪制音頻波形圖的實現(xiàn)

    這篇文章主要介紹了wavesurfer.js繪制音頻波形圖的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • JavaScript中內(nèi)存泄漏的介紹與教程(推薦)

    JavaScript中內(nèi)存泄漏的介紹與教程(推薦)

    內(nèi)存泄露是指一塊被分配的內(nèi)存既不能使用,又不能回收,直到瀏覽器進程結束。下面這篇文章主要給的大家介紹了關于JavaScript中內(nèi)存泄漏的相關資料,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-06-06

最新評論

东海县| 宣汉县| 神池县| 唐山市| 泰来县| 板桥市| 两当县| 高邮市| 西和县| 青田县| 碌曲县| 大埔区| 社会| 东丽区| 达拉特旗| 辉南县| 东城区| 措勤县| 萨迦县| 清苑县| 荔波县| 安庆市| 依兰县| 西和县| 茂名市| 仙桃市| 蓬莱市| 曲沃县| 湟源县| 建宁县| 西吉县| 温泉县| 马关县| 巴楚县| 白银市| 垫江县| 公主岭市| 蒙山县| 广水市| 修水县| 洛南县|