国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

node.js|vue.js|jquery|angularjs|React|json|js教程|

服務器之家 - 編程語言 - JavaScript - js教程 - JavaScript設計模式學習之代理模式

JavaScript設計模式學習之代理模式

2022-03-10 16:34有夢想的咸魚前端 js教程

這篇文章主要介紹了JavaScript設計模式學習之代理模式,對設計模式感興趣的同學,可以參考下

概述

代理模式屬于設計模式中結構型的設計模式;

定義:

顧名思義就是為一個對象提供一個代用品或占位符,以便控制對它的訪問!

白話解釋:

很多明星都是有經紀人的,如果要聯系明顯進行商演或者開演唱會之類的商業活動通過是需要先跟經紀人取得聯系的,跟經紀人談好了合作事宜之后經紀人再轉達給某明星,然后某明星才會去參加活動;同樣租房也是一個同樣的道理,我們不管是租房還是買房,第一反應肯定是找鏈家這類的平臺,因為我們只需要跟鏈家進行溝通,而鏈家去跟房東溝通,省去了我們直接和房東溝通的步驟;因為鏈家就是一個代理模式,它代理了這個房東的房源;

實現方法

舉個例子:

你作為一個追星狂魔,是某明星的忠誠粉絲;剛好某明星近期要過生日了,你準備送上禮物代表你的心意,正常的流程:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
var Fans = {
    flower(){
        star.reception("花");
    }
}
 
var star = {
    reception:function(gift){
        console.log("收到粉絲的:"+gift);
    }
}
 
Fans.flower();   //收到粉絲的:花

你選擇了買花寄給她,希望她能感受到你的心意;但是往往理想很豐滿,現實很骨感!別忘了還有經紀人,因為簽收你的禮物的往往不是明星本人而是經紀人:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var Fans = {
    flower(){
        Agent.reception("花");
    }
}
 
var Agent = {
    reception:function(gift){
        console.log("粉絲送的:"+gift);   //粉絲送的:花
        star.reception("花");
    }
}
var star = {
    reception:function(gift){
        console.log("收到粉絲的:"+gift);
    }
}
 
Fans.flower();    //收到粉絲的:花

這里的經紀人就是一個簡單的代理了,粉絲需要先把禮物給經紀人,經紀人再轉給明星本人;

保護代理

明星滿心歡喜的看到粉絲寄過來的包裹的時候,拆開一看,原來是花!明星很不屑,所以告訴經紀人,以后凡是給我寄花的,通通不要給我了,你自己看著處理:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var Fans = {
    flower(){
        Agent.reception("花");
    }
}
 
var Agent = {
    reception:function(gift){
        console.log("粉絲送的:"+gift);  //粉絲送的:花
        if(gift != "花"){
            star.reception("花");
        }
      
    }
}
var star = {
    reception:function(gift){
        console.log("收到粉絲的:"+gift);
    }
}
 
Fans.flower();

上面的程序中明星根本就沒有收到粉絲寄過來的花,因為在經紀人那里就已經攔截處理了;通過經紀人來過濾掉一部分禮物,這種模式叫做保護代理;

虛擬代理

粉絲送花明星收不到,那粉絲就轉換一下思路,送點錢自己去買想要的東西吧!于是找到經紀人,給了經紀人一百萬現金,讓經紀人轉達給明星本人;

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function Money(){
    this.total = "一百萬現金"
   return this.total;
}
var Fans = {
    flower(){
        Agent.reception();
    }
}
 
var Agent = {
    reception:function(){
        // console.log("粉絲送的:"+gift);
        let money = new Money();
        star.reception(money.total);
      
    }
}
var star = {
    reception:function(gift){
        console.log("收到粉絲的:"+gift);  //收到粉絲的:一百萬現金
    }
}
 
Fans.flower();

明星收到了一百萬就很開心;這一百萬因為不是花,沒有被經紀人攔截過濾;所以明星本人就直接收到了,這種模式我們稱為虛擬代理模式;

虛擬代理實現圖片懶加載

沒用代理的時候我們的代碼是這樣的:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 創建一個本體對象
var myImage = (function(){
  // 創建標簽
  var imgNode = document.createElement( 'img' );
  // 添加到頁面
  document.body.appendChild( imgNode );
  return {
    // 設置圖片的src
    setSrc: function( src ){
      // 更改src
      imgNode.src = src;
    }
  }
})();
 
myImage.setSrc( 'http:// image.qq.com/music/photo/k/000GGDys0yA0Nk.jpg' );

虛擬代理

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// 創建一個本體對象
var myImage = (function(){
  // 創建標簽
  var imgNode = document.createElement( 'img' );
  // 添加到頁面
  document.body.appendChild( imgNode );
  return {
    // 設置圖片的src
    setSrc: function( src ){
      // 更改src
      imgNode.src = src;
    }
  }
})();
 
// 創建代理對象
var proxyImage = (function(){
  // 創建一個新的img標簽
  var img = new Image;
  // img 加載完成事件
  img.onload = function(){
    // 調用 myImage 替換src方法
    myImage.setSrc( this.src );
  }
  return {
    // 代理設置地址
    setSrc: function( src ){
      // 預加載 loading
      myImage.setSrc( 'file:// /C:/Users/svenzeng/Desktop/loading.gif' );
      // 賦值正常圖片地址
      img.src = src;
    }
  }
})();
 
proxyImage.setSrc( 'http:// image.qq.com/music/photo/k/000GGDys0yA0Nk.jpg' );

上面這段代碼運用代理模式來實現圖片預加載,可以看到通過代理模式巧妙地將創建圖片與預加載邏輯分離,并且在未來如果不需要預加載,只要改成請求本體代替請求代理對象就行。

以上就是JavaScript設計模式學習之代理模式的詳細內容,更多關于JavaScript設計模式的資料請關注服務器之家其它相關文章!

原文鏈接:https://www.cnblogs.com/dengyao-blogs/p/11713185.html

延伸 · 閱讀

精彩推薦
  • js教程了不起的11個JavaScript代碼重構最佳實踐小結

    了不起的11個JavaScript代碼重構最佳實踐小結

    這篇文章主要介紹了了不起的11個JavaScript代碼重構最佳實踐小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需...

    pikapi3892021-12-29
  • js教程用js控制電燈開關

    用js控制電燈開關

    這篇文章主要為大家詳細介紹了用js控制電燈開關,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    小蘇(o﹃o )4012022-03-08
  • js教程javascript實現隨機抽獎功能

    javascript實現隨機抽獎功能

    這篇文章主要為大家詳細介紹了javascript實現隨機抽獎功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    彴兗7152021-12-23
  • js教程JavaScript實現4位隨機驗證碼的生成

    JavaScript實現4位隨機驗證碼的生成

    這篇文章主要為大家詳細介紹了JavaScript實現4位隨機驗證碼的生成,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    weixin_4202683110542022-01-10
  • js教程JavaScript事件概念詳解(區分靜態注冊和動態注冊)

    JavaScript事件概念詳解(區分靜態注冊和動態注冊)

    這篇文章主要介紹了JavaScript事件(區分靜態注冊和動態注冊)的相關資料,幫助大家更好的理解和學習使用JavaScript,感興趣的朋友可以了解下...

    皮卡丘和羊寶貝7042022-01-17
  • js教程JavaScript實現鼠標經過表格行給出顏色標識

    JavaScript實現鼠標經過表格行給出顏色標識

    這篇文章主要為大家詳細介紹了JavaScript實現鼠標經過表格行給出顏色標識,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參...

    KathyLJQ8702022-02-27
  • js教程確保JavaScript 安全的五大做法

    確保JavaScript 安全的五大做法

    如果你運行交互式網站或應用程序,JavaScript 安全性是重中之重。 從程序錯誤和不安全的用戶輸入到惡意攻擊,有很多事情可能會出錯。...

    粵嵌教育8832022-01-11
  • js教程小程序錄音功能實現

    小程序錄音功能實現

    這篇文章主要介紹了小程序錄音功能實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編...

    愛喝華農學士的程序媛9042022-02-13
主站蜘蛛池模板: 国产综合中文字幕 | 中文字幕在线精品 | 亚洲一区二区三区在线播放 | av在线成人 | 在线视频 亚洲 | 久久精品日产第一区二区三区 | 成年网站 | 97精品国产一区二区三区 | 日本高清视频在线播放 | 都市激情在线视频 | 一区二区三区视频在线观看 | 日韩三级视频 | 欧美国产日韩一区 | 中文字幕在线视频一区 | 亚洲国产精品成人女人久久久 | 国产一区 欧美 | 激情综合站 | 日本三级韩国三级三级a级中文 | 99久久精品一区二区成人 | 精一区二区 | 国产片在线观看免费观看 | 伊人伊人网 | 久久久久久久免费 | 日韩在线免费电影 | 亚洲成人在线观看视频 | 久热免费在线观看 | 在线一区二区免费 | 粉嫩视频在线观看 | 亚洲依人 | 一区二区三区成人 | 1区2区视频 | 一本色道久久综合狠狠躁篇的优点 | 97精品国产97久久久久久免费 | 成人午夜网站 | 成人教育av | 干中文字幕 | 成人午夜精品久久久久久久3d | 亚洲在线电影 | 最新国产精品 | 亚洲一区二区免费视频 | 亚洲一区精品在线 |