設(shè)計(jì)模式-代理模式

介紹

代理模式是結(jié)構(gòu)性模式徘铝,它通過(guò)引入一個(gè)新的對(duì)象(如小圖片和遠(yuǎn)程代理對(duì)象)來(lái)實(shí)現(xiàn)對(duì)真實(shí)對(duì)象的操作或者將新的對(duì)象作為真實(shí)對(duì)象的一個(gè)替身衍锚。
我們現(xiàn)實(shí)生活中也有許多代理模式的影子晴及。例如朋友出國(guó)旅游虚倒,我們可以托朋友幫忙買(mǎi)些東西诊笤∠敌常或者,我們點(diǎn)外賣(mài)讨跟,配送員替我們?nèi)ト〔偷鹊取?br> 結(jié)構(gòu)圖


圖片來(lái)源于網(wǎng)絡(luò)

一共有三個(gè)角色

  1. Subject(抽象主題角色)
  2. Proxy(代理主題角色)
  3. RealSubject(真實(shí)主題角色)

時(shí)序圖

圖片來(lái)源于網(wǎng)絡(luò)

案例

這邊的配送員就是代理角色纪他,顧客是真實(shí)角色,配送員完成顧客到店取貨的步驟晾匠。
抽象主題角色

public abstract class Subject {
    public abstract void getFood();
}

顧客

public class Customer extends Subject {
    @Override
    public void getFood() {
        System.out.println("客戶(hù)拿到餐啦!");
    }
}

配送員

public class DeliveryMan extends Subject {
    private Customer customer = new Customer();
    
    public void goShop(){
        System.out.println("去商家取餐!");
    }

    @Override
    public void getFood() {
        goShop();
        customer.getFood();
        finish();
        
    }
    
    public void finish() {
        System.out.println("結(jié)束送餐!");
    }

}

測(cè)試

public class Client {

    public static void main(String[] args) {
        Subject subject = new DeliveryMan();
        subject.getFood();
    }

}

測(cè)試結(jié)果

這里寫(xiě)圖片描述

Github地址

總結(jié)

上面的案例只是簡(jiǎn)單的代理模式茶袒,實(shí)際開(kāi)發(fā)中要復(fù)雜許多。
而且代理有還許多種凉馆,例如遠(yuǎn)程代理(Remote Proxy)薪寓、 虛擬代理(Virtual Proxy)等等。
還有一種較為高級(jí)的代理模式叫做動(dòng)態(tài)代理澜共,Spring AOP就是采用動(dòng)態(tài)代理模式向叉。有興趣的可以

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市嗦董,隨后出現(xiàn)的幾起案子母谎,更是在濱河造成了極大的恐慌,老刑警劉巖京革,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奇唤,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡匹摇,警方通過(guò)查閱死者的電腦和手機(jī)咬扇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)来惧,“玉大人冗栗,你說(shuō)我怎么就攤上這事。” “怎么了隅居?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵钠至,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我胎源,道長(zhǎng)棉钧,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任涕蚤,我火速辦了婚禮宪卿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘万栅。我一直安慰自己佑钾,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布烦粒。 她就那樣靜靜地躺著休溶,像睡著了一般。 火紅的嫁衣襯著肌膚如雪扰她。 梳的紋絲不亂的頭發(fā)上兽掰,一...
    開(kāi)封第一講書(shū)人閱讀 49,816評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音徒役,去河邊找鬼孽尽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛忧勿,可吹牛的內(nèi)容都是我干的杉女。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼狐蜕,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼宠纯!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起层释,我...
    開(kāi)封第一講書(shū)人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎快集,沒(méi)想到半個(gè)月后贡羔,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡个初,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年乖寒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片院溺。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡楣嘁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情逐虚,我是刑警寧澤聋溜,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站叭爱,受9級(jí)特大地震影響撮躁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜买雾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一把曼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧漓穿,春花似錦嗤军、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至山害,卻和暖如春纠俭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背浪慌。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工冤荆, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人权纤。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓钓简,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親汹想。 傳聞我的和親對(duì)象是個(gè)殘疾皇子外邓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

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