這一篇主要參照了《大話設計模式》
//代理模式:為其他對象提供一種代理以控制這個對象的訪問
//簡而言之就是給對象加一個殼
//1.遠程代理
//2.虛擬代理
//3.安全代理
//4.智能指引www.2cto.com
//問1:代理模式和聚合關系有什麼區別,感覺適配器模式也能解決類似問題?
//答1:強調了對象的行為
截下來的圖,自己用visio畫的太丑了
[cpp]
#include "stdafx.h"
#include <windows.h>
#include <iostream>
using namespace std;
//大話設計模式中的例子
//A君讓代理人B君給C小姐送禮物
class IGiveGift
{
public:
IGiveGift(){;}
virtual ~IGiveGift(){;}
virtual void GiveGift() = 0;
};
class PersonA : public IGiveGift
{
public:
PersonA(const std::string & strGirlName)
{
m_strGirlName = strGirlName;
}
void GiveGift()
{
std::cout<<m_strGirlName.c_str()<<","<<"送你的禮物!"<<endl;
}
private:
std::string m_strGirlName;
};
class ProxyB : public IGiveGift
{
public:
void SetClientPerson(PersonA *pA)
{
m_pPersonA = pA;
}
void GiveGift()
{
m_pPersonA->GiveGift();
}
private:
PersonA *m_pPersonA;
};
int _tmain(int argc, _TCHAR* argv[])
{
//A君出現了,懷著對心上人的思念
PersonA *pA = new PersonA("C小姐");
//A君不好意思送禮物,於是找到了代理B君
ProxyB *pB = new ProxyB();
pB->SetClientPerson(pA);
//B君送禮來了
pB->GiveGift();
//落幕
if (pA)
{
delete pA;
pA = NULL;
}
if (pB)
{
delete pB;
pB = NULL;
}
return 0;
}