代理模式

代理模式定義:

給某一個對象提供一個代理掠归,并由代理對象控制對元對象的引用躬厌。代理模式是一種對象結(jié)構(gòu)模式

代理模式機(jī)構(gòu)圖

image.png

遠(yuǎn)程代理:

為了一個位于不同地址空間的對象提供一個本地的代理對象,遠(yuǎn)程代理可以將網(wǎng)絡(luò)的細(xì)節(jié)隱藏起來筒严,是的客戶端不必考慮網(wǎng)絡(luò)的存在昔善,客戶端王權(quán)可以認(rèn)為被代理的遠(yuǎn)程業(yè)務(wù)對象是局域的而不是遠(yuǎn)程。而遠(yuǎn)程代理對象承擔(dān)了大部分的網(wǎng)絡(luò)通訊工作殿如,并負(fù)責(zé)對遠(yuǎn)程業(yè)務(wù)方法調(diào)用。

虛擬代理

對于一些占用系統(tǒng)資源比較多的或者加載時間長的對象捶枢,可以提供你虛擬代理握截,在真實對象創(chuàng)建成功過之間代理扮演真實對象的替身,二檔真實對象之后烂叔,虛擬代理講用戶的請求轉(zhuǎn)發(fā)給真實對象。

動態(tài)代理

通常情況下固歪,每個代理類編譯之后都會生成一個class文件蒜鸡,代理類的所有實現(xiàn)的接口和代理方法都是被固定的,動態(tài)代理就是為了減少class的增加牢裳。(jdk invocationHandler)

代理模式主要優(yōu)缺點

優(yōu)點
1.代理模式能夠協(xié)調(diào)調(diào)用者和被調(diào)用者逢防,在一定程度上降低了系統(tǒng)的耦合性,滿足迪米特法則
2.客戶端可以針對抽象主題角色進(jìn)行編程蒲讯,增加和替換代理類無須修改源代碼忘朝,符合開閉原則,系統(tǒng)具有更好的靈活性和擴(kuò)展性判帮。
3.遠(yuǎn)程代理位于兩個不同地址空間對象的訪問提供你一個實現(xiàn)機(jī)制局嘁,可以將一些消耗資源較多的對象和操作移至性能更好的計算技上,提高系統(tǒng)的整體運行效率晦墙。
4.虛擬代理通過一個消耗資源較少的對象代理一個消耗資源較多的對象悦昵,可以在一定程度上節(jié)省系統(tǒng)的運行開銷。
5.保護(hù)代理可以控制對一個對象的訪問權(quán)限晌畅,為不同用戶提供不同級別的使用權(quán)限但指。
缺點
1.由于客戶端和真實主題之間增加了代理對象,因此有寫類型的代理模式可能會造成請求的處理速度變慢,
2.實現(xiàn)代理需要額外的工作棋凳。有些代理模式的實現(xiàn)非常復(fù)雜拦坠,

代理模式使用場景

1.當(dāng)客戶端對象需要訪問遠(yuǎn)程主機(jī)中的對象時,可以使用遠(yuǎn)程代理剩岳、
2.當(dāng)需要用一個消耗資源較少的對象來代理一個消耗資源較多的對象贪婉,從而降低系統(tǒng)開銷÷啵縮短運行時間時疲迂,可以使用虛擬代理,
3.當(dāng)需要控制對一個對象的訪問莫湘,為不同用戶提供不同級別的訪問權(quán)限是可以使用尤蒿,保護(hù)代理
4.當(dāng)需要為摸一個被頻繁訪問的操作結(jié)果提供臨時空間,一共多個客戶端共享訪問這些結(jié)果時幅垮,可以使用緩沖代理腰池,通過緩沖代理,系統(tǒng)無須在客戶端每一次訪問時都重新執(zhí)行操作忙芒。只需要直接從臨時緩沖區(qū)獲取操作結(jié)果既可示弓。
5。當(dāng)需要為一個對象的訪問提供額外操作時呵萨,可以提供智能引用代理

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末奏属,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子潮峦,更是在濱河造成了極大的恐慌囱皿,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件忱嘹,死亡現(xiàn)場離奇詭異嘱腥,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)拘悦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進(jìn)店門齿兔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人础米,你說我怎么就攤上這事分苇。” “怎么了椭盏?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵组砚,是天一觀的道長。 經(jīng)常有香客問我掏颊,道長糟红,這世上最難降的妖魔是什么艾帐? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮盆偿,結(jié)果婚禮上柒爸,老公的妹妹穿的比我還像新娘。我一直安慰自己事扭,他們只是感情好捎稚,可當(dāng)我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著求橄,像睡著了一般今野。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上罐农,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天条霜,我揣著相機(jī)與錄音,去河邊找鬼涵亏。 笑死宰睡,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的气筋。 我是一名探鬼主播拆内,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼宠默!你這毒婦竟也來了麸恍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤光稼,失蹤者是張志新(化名)和其女友劉穎或南,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體艾君,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年肄方,在試婚紗的時候發(fā)現(xiàn)自己被綠了冰垄。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡权她,死狀恐怖虹茶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情隅要,我是刑警寧澤蝴罪,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站步清,受9級特大地震影響要门,放射性物質(zhì)發(fā)生泄漏虏肾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一欢搜、第九天 我趴在偏房一處隱蔽的房頂上張望封豪。 院中可真熱鬧,春花似錦炒瘟、人聲如沸吹埠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缘琅。三九已至,卻和暖如春廓推,著一層夾襖步出監(jiān)牢的瞬間刷袍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工受啥, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留做个,地道東北人。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓滚局,卻偏偏與公主長得像居暖,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子藤肢,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,585評論 2 359

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

  • 目錄 本文的結(jié)構(gòu)如下: 引言 什么是代理模式 模式的結(jié)構(gòu) 典型代碼 代理模式分類 代碼示例 代理模式和裝飾者模式的...
    w1992wishes閱讀 1,543評論 0 13
  • 1 場景問題# 1.1 訪問多條數(shù)據(jù)## 考慮這樣一個實際應(yīng)用:要一次性訪問多條數(shù)據(jù)太闺。 這個功能的背景是這樣的;在...
    七寸知架構(gòu)閱讀 3,011評論 1 52
  • 引言 在古代《三國志·諸葛亮傳》中有這么一句話——“政事無巨細(xì)咸于亮嘁圈∈÷睿”;在唐代張九齡的《謝賜大麥面狀》中還有這么...
    CrazyMO_閱讀 379評論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理最住,服務(wù)發(fā)現(xiàn)钞澳,斷路器,智...
    卡卡羅2017閱讀 134,702評論 18 139
  • 前幾日涨缚,我下班回家轧粟,兜兜見到我,跑著拿來一包東西脓魏,打開后兰吟,急忙放入我嘴里,稚嫩的聲音告訴我茂翔,我給媽媽留得混蔼,好不好吃...
    Ma瑞敏閱讀 205評論 0 0