代理模式

大話設(shè)計模式里面的例子:
小王想追求小娟箱靴,但他不認(rèn)識小娟腺逛。但他的朋友小林認(rèn)識小娟,所以他通過讓小林幫忙送禮物的方式追求小娟刨晴。

這里的小林就是我們的代理屉来!

代理模式的目的是: 隱藏真實訪問對象,同時可以處理別的事情

定義
代理模式:為其他對象提供一種代理以控制對這個對象的訪問
也就是說,代理是一個中介, 它連接客戶端和目標(biāo)對象,同時可以附加對種用途

模式結(jié)構(gòu)

Paste_Image.png

例子:

class Girl {
public:
    Girl(char* name = ""):mName(name){}
    char* getName()  {
        return mName;
    }
private:
    char* mName;
};

class GiveGift {
public:
    virtual void GiveDolls() = 0;
    virtual void GiveFlowers() = 0;
    virtual void GiveChocolate() = 0;
};

class Puisuit : public GiveGift {
public:
    Puisuit(Girl mm):mGirl(mm){}

    virtual void GiveDolls()  {
        cout<<"送"<<mGirl.getName()<<"玩具!"<<endl;
    }

    virtual void GiveFlowers() {
        cout<<"送"<<mGirl.getName()<<"鮮花狈癞!"<<endl;
    }

    virtual void GiveChocolate()  {
        cout<<"送"<<mGirl.getName()<<"巧克力茄靠!"<<endl;
    }
private:
    Girl mGirl;

};

class Proxy : public GiveGift {
public:
    Proxy(Girl mm)  {
        mPuisuit = new Puisuit(mm);
    }

    virtual void GiveDolls()  {
        mPuisuit->GiveDolls();
    }

    virtual void GiveFlowers()  {
        mPuisuit->GiveFlowers();
    }

    virtual void GiveChocolate()  {
        mPuisuit->GiveChocolate();
    }
private:
    Puisuit* mPuisuit;

};

#include <iostream>
#include "Proxy.h"

using namespace std;

int main() {
    Girl mm("小娟");
    Proxy pro(mm);
    pro.GiveChocolate();
    pro.GiveDolls();
    pro.GiveFlowers();

    return 0;
}

優(yōu)點:

在不改變原有代碼的情況下,把類的核心功能和裝飾功能區(qū)分開了,并能動態(tài)擴(kuò)展一個對象的新功能
缺點:

對于多次裝飾的對象,調(diào)試時尋找錯誤可能需要逐級排查蝶桶,較為煩瑣慨绳。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市真竖,隨后出現(xiàn)的幾起案子脐雪,更是在濱河造成了極大的恐慌,老刑警劉巖恢共,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件战秋,死亡現(xiàn)場離奇詭異,居然都是意外死亡讨韭,警方通過查閱死者的電腦和手機(jī)脂信,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來透硝,“玉大人狰闪,你說我怎么就攤上這事”羯” “怎么了埋泵?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我丽声,道長礁蔗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任雁社,我火速辦了婚禮瘦麸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘歧胁。我一直安慰自己,他們只是感情好厉碟,可當(dāng)我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布喊巍。 她就那樣靜靜地躺著,像睡著了一般箍鼓。 火紅的嫁衣襯著肌膚如雪崭参。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天款咖,我揣著相機(jī)與錄音何暮,去河邊找鬼。 笑死铐殃,一個胖子當(dāng)著我的面吹牛海洼,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播富腊,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼坏逢,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了赘被?” 一聲冷哼從身側(cè)響起是整,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎民假,沒想到半個月后浮入,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡羊异,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年事秀,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片球化。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡秽晚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出筒愚,到底是詐尸還是另有隱情赴蝇,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布巢掺,位于F島的核電站句伶,受9級特大地震影響劲蜻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜考余,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一先嬉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧楚堤,春花似錦疫蔓、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至酥筝,卻和暖如春滚躯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嘿歌。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工掸掏, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人宙帝。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓丧凤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親茄唐。 傳聞我的和親對象是個殘疾皇子息裸,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,700評論 2 354

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

  • 1 場景問題# 1.1 訪問多條數(shù)據(jù)## 考慮這樣一個實際應(yīng)用:要一次性訪問多條數(shù)據(jù)。 這個功能的背景是這樣的沪编;在...
    七寸知架構(gòu)閱讀 2,997評論 1 52
  • 目錄 本文的結(jié)構(gòu)如下: 引言 什么是代理模式 模式的結(jié)構(gòu) 典型代碼 代理模式分類 代碼示例 代理模式和裝飾者模式的...
    w1992wishes閱讀 1,534評論 0 13
  • 引言 在古代《三國志·諸葛亮傳》中有這么一句話——“政事無巨細(xì)咸于亮呼盆。”蚁廓;在唐代張九齡的《謝賜大麥面狀》中還有這么...
    CrazyMO_閱讀 375評論 0 0
  • 文/豬小淺 1 溫嵐提出分居的要求時访圃,趙啟明并沒有當(dāng)回事。 結(jié)婚這些年相嵌,他捫心自問腿时,自己在老公這個角色的扮演上,雖...
    豬小淺閱讀 2,089評論 6 25
  • 我看了老師一段話饭宾,深有所感批糟。我曾覺得有些人自大高傲,有些人恃寵而驕看铆,有些人油腔滑調(diào)徽鼎,有些人市井聒噪,我看不慣,受不...
    半真的人閱讀 344評論 0 0