《JavaScript設(shè)計模式與開發(fā)實踐》之代理模式

代理模式是為一個對象提供一個代用品或占位符膘婶,以便控制對它的訪問恒水。

保護代理: 控制不同權(quán)限的對象對目標(biāo)對象的訪問倔幼;

虛擬代理: 把一些開銷很大的代理,延遲到真正需要它的時候才去創(chuàng)建修壕;

緩存代理: 可以為一些開銷大的運算結(jié)果提供暫時的存儲愈捅,在下次運算時,如果傳遞進來的參數(shù)與之前一致慈鸠,則可以直接返回前面存儲的運算結(jié)果蓝谨;

防火墻代理: 控制網(wǎng)絡(luò)資源的訪問,保護主題不讓“壞人”接近青团;

遠程代理: 為了一個對象在不同的地址空間提供局部代表像棘,在 Java 中,遠程代理可以是另一個虛擬機的對象壶冒。

智能引用代理:取代了簡單的指針,它在訪問對象時執(zhí)行一些附加操作截歉,比如計算一個對象被引用的次數(shù)胖腾。

寫時復(fù)制代理:通常用于復(fù)制一個龐大對象的情況。寫時復(fù)制代理延遲了復(fù)制的過程,
當(dāng)對象被真正修改時咸作,才對它進行復(fù)制操作锨阿。寫時復(fù)制代理是虛擬代理的一種變體,DLL
(操作系統(tǒng)中的動態(tài)鏈接庫)是其典型運用場景记罚。


Demo:下面重點講一下 JS 中常用的虛擬代理

用途:

  1. 圖片預(yù)加載墅诡;
  2. 虛擬代理合并 HTTP 請求;
  3. 虛擬代理在惰性加載中應(yīng)用桐智。

栗子(圖片預(yù)加載):

var myImage = (function(){
 var imgNode = document.createElement( 'img' );
 document.body.appendChild( imgNode );
 return {
 setSrc: function( src ){
 imgNode.src = src;
 }
 }
})();
var proxyImage = (function(){
 var img = new Image;
 img.onload = function(){
 myImage.setSrc( this.src );
 }
 return {
 setSrc: function( src ){
 myImage.setSrc( 'file:// /C:/Users/svenzeng/Desktop/loading.gif' );
 img.src = src;
 }
 }
})();
proxyImage.setSrc( 'http:// imgcache.qq.com/music/photo/k/000GGDys0yA0Nk.jpg' ); 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末末早,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子说庭,更是在濱河造成了極大的恐慌然磷,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刊驴,死亡現(xiàn)場離奇詭異姿搜,居然都是意外死亡,警方通過查閱死者的電腦和手機捆憎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門舅柜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人躲惰,你說我怎么就攤上這事致份。” “怎么了礁扮?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵知举,是天一觀的道長。 經(jīng)常有香客問我太伊,道長雇锡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任僚焦,我火速辦了婚禮锰提,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘芳悲。我一直安慰自己立肘,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布名扛。 她就那樣靜靜地躺著谅年,像睡著了一般。 火紅的嫁衣襯著肌膚如雪肮韧。 梳的紋絲不亂的頭發(fā)上融蹂,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天旺订,我揣著相機與錄音,去河邊找鬼超燃。 笑死区拳,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的意乓。 我是一名探鬼主播樱调,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼届良!你這毒婦竟也來了笆凌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤伙窃,失蹤者是張志新(化名)和其女友劉穎菩颖,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體为障,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡晦闰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了鳍怨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片呻右。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖鞋喇,靈堂內(nèi)的尸體忽然破棺而出声滥,到底是詐尸還是另有隱情,我是刑警寧澤侦香,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布落塑,位于F島的核電站,受9級特大地震影響罐韩,放射性物質(zhì)發(fā)生泄漏憾赁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一散吵、第九天 我趴在偏房一處隱蔽的房頂上張望龙考。 院中可真熱鬧,春花似錦矾睦、人聲如沸晦款。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缓溅。三九已至,卻和暖如春赁温,著一層夾襖步出監(jiān)牢的瞬間肛宋,已是汗流浹背州藕。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留酝陈,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓毁涉,卻偏偏與公主長得像沉帮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子贫堰,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,103評論 1 32
  • javascript設(shè)計模式與開發(fā)實踐 設(shè)計模式 每個設(shè)計模式我們需要從三點問題入手: 定義 作用 用法與實現(xiàn) 單...
    穿牛仔褲的蚊子閱讀 4,063評論 0 13
  • 定義 ??代理模式是為一個對象提供一個占位符穆壕,以便控制對它的訪問。 描述 ??代理模式是一種非常有意義的模式其屏,在生...
    小小的開發(fā)人員閱讀 358評論 0 1
  • feisky云計算喇勋、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 3,855評論 0 5
  • 第二部分 自動內(nèi)存管理機制 第二章 java內(nèi)存異常與內(nèi)存溢出異常 運行數(shù)據(jù)區(qū)域 程序計數(shù)器:當(dāng)前線程所執(zhí)行的字節(jié)...
    小明oh閱讀 1,169評論 0 2