第7章 為別人做嫁衣--代理模式

代理模式

代理模式(Proxy)馁龟,為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問想罕。[DP]

代理模式結(jié)構(gòu)圖

圖片.png

基本代碼

Subject類状答,定義了RealSubject和Proxy的共用接口封寞,這樣就在任何使用RealSubject的地方都可以使用Proxy粉洼。

public interface Subject {

    void request();

}

RealSubject類节预,定義Proxy所代表的真實(shí)實(shí)體。

public class RealSubject implements Subject {
    @Override
    public void request() {
        print("真實(shí)的請(qǐng)求");
    }
}

Proxy類属韧,保存一個(gè)引用使得代理可以訪問實(shí)體安拟,并提供一個(gè)與Subject的接口相同的接口,這樣代理就可以用來代替實(shí)體宵喂。

public class Proxy implements Subject {

    RealSubject realSubject;

    @Override
    public void request() {
        if (realSubject == null) {
            realSubject = new RealSubject();
        }
        realSubject.request();
    }
}

測試代碼

    public static void main(String[] args) {
        Proxy proxy = new Proxy();
        proxy.request();
    }

代理模式的應(yīng)用

第一去扣,遠(yuǎn)程代理,也就是為一個(gè)對(duì)象在不同的地址空間提供局部代表樊破。這樣可以隱藏一個(gè)對(duì)象存在于不同地址空間的事實(shí)愉棱。[DP]
第二,虛擬代理哲戚,是根據(jù)需要?jiǎng)?chuàng)建開銷很大的對(duì)象奔滑。通過它來存放實(shí)例化需要很長時(shí)間的真實(shí)對(duì)象。[DP]這樣可以達(dá)到性能的最優(yōu)化顺少,比如打開一個(gè)很大的HTML網(wǎng)頁朋其,里面可能有很多的文字和圖片,但打開速度還是很快脆炎,此時(shí)所看到的是所有的文字梅猿,但圖片卻是一張一張地下載后才能看到。那些未打開的圖片框秒裕,就是通過虛擬代理替代了真實(shí)的圖片袱蚓,此時(shí)代理存儲(chǔ)了真實(shí)圖片的路徑和尺寸。
第三几蜻,安全代理喇潘,用來控制真實(shí)對(duì)象訪問時(shí)的權(quán)限。[DP]一般用于對(duì)象應(yīng)該有不同的訪問權(quán)限的時(shí)候梭稚。
第四颖低,智能指引,是指當(dāng)調(diào)用真實(shí)的對(duì)象時(shí)弧烤,代理處理另外一些事忱屑。[DP]如計(jì)算真實(shí)對(duì)象的引用次數(shù),這樣當(dāng)該對(duì)象沒有引用時(shí),可以自動(dòng)釋放它莺戒;或當(dāng)?shù)谝淮我靡粋€(gè)持久對(duì)象時(shí)粱栖,將它裝入內(nèi)存;或在訪問一個(gè)實(shí)際對(duì)象前脏毯,檢查是否已經(jīng)鎖定它闹究,以確保其他對(duì)象不能改變它。它們都是通過代理在訪問一個(gè)對(duì)象時(shí)附加一些內(nèi)務(wù)處理食店。

代理模式其實(shí)就是在訪問對(duì)象時(shí)引入一定程度的間接性渣淤,因?yàn)檫@種間接性,可以附加多種用途吉嫩。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末价认,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子自娩,更是在濱河造成了極大的恐慌用踩,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件忙迁,死亡現(xiàn)場離奇詭異脐彩,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)姊扔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門惠奸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人恰梢,你說我怎么就攤上這事佛南。” “怎么了嵌言?”我有些...
    開封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵嗅回,是天一觀的道長。 經(jīng)常有香客問我摧茴,道長绵载,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任蓬蝶,我火速辦了婚禮尘分,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘丸氛。我一直安慰自己,他們只是感情好著摔,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開白布缓窜。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪禾锤。 梳的紋絲不亂的頭發(fā)上私股,一...
    開封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音恩掷,去河邊找鬼倡鲸。 笑死,一個(gè)胖子當(dāng)著我的面吹牛黄娘,可吹牛的內(nèi)容都是我干的峭状。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼逼争,長吁一口氣:“原來是場噩夢啊……” “哼优床!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起誓焦,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤胆敞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后杂伟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體移层,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年赫粥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了幽钢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡傅是,死狀恐怖匪燕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情喧笔,我是刑警寧澤帽驯,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站书闸,受9級(jí)特大地震影響尼变,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜浆劲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一嫌术、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧牌借,春花似錦度气、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽适荣。三九已至,卻和暖如春院领,著一層夾襖步出監(jiān)牢的瞬間弛矛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來泰國打工比然, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丈氓,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓强法,卻偏偏與公主長得像万俗,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拟烫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

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

  • 【學(xué)習(xí)難度:★★★☆☆该编,使用頻率:★★★★☆】直接出處:代理模式梳理和學(xué)習(xí):https://github.com/...
    BruceOuyang閱讀 1,728評(píng)論 0 1
  • 動(dòng)機(jī) 有時(shí),我們需要對(duì)一個(gè)對(duì)象的訪問進(jìn)行控制硕淑。比如說如果我們有一些開銷較大的對(duì)象课竣,但是只需要使用其中一部分方法,我...
    holysu閱讀 977評(píng)論 0 5
  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 29,395評(píng)論 8 265
  • 高樓目盡欲黃昏置媳,梧桐葉上蕭蕭雨于樟。秋的雨聲,令人陶醉拇囊。 睡起秋聲無覓處迂曲,滿階梧葉日明中。秋的夜晚寥袭,令人遐想路捧。 未覺池...
    林燕妮2020閱讀 966評(píng)論 0 0
  • 2月28號(hào),周日传黄。天氣晴杰扫,溫度5-19℃。 早上八點(diǎn)膘掰,準(zhǔn)備打掃衛(wèi)生章姓,整理房間,總結(jié)回國后一段時(shí)間內(nèi)的得失
    漫步人間閱讀 142評(píng)論 0 0