proxy model

来源:互联网 发布:c语言编程爱心图案 编辑:程序博客网 时间:2024/05/19 04:05
#include <iostream>#include <windows.h>using namespace std;/************************************************************************//* 例如:/* 小明要给韩梅梅送花,但是小明不认识韩梅梅,但是李雷是韩梅梅的好朋友,小明和李雷是/* 好朋友, 所以小明可以通过李雷(代理)送花给韩梅梅/* 1.定义共同的协议,宾语/* 2.代理和使用者都实现该协议/************************************************************************/class SchoolGril{public:string GetName(){return m_strName;}void SetName(const std::string& strName){m_strName = strName;}private:string m_strName;};interface GiveGift{virtual void GiveDolls() = 0;virtual void GiveFollowers() = 0;virtual void GiveChocolate() = 0;};class Pursuit : public GiveGift{public:Pursuit(SchoolGril *pGirl){m_pGirl = pGirl;}virtual void GiveDolls(){cout << m_pGirl->GetName().data() << "Give dolls" << endl;}virtual void GiveFollowers(){cout << m_pGirl->GetName().data() << "Give followers" << endl;}virtual void GiveChocolate(){cout << m_pGirl->GetName().data() << "Give chocolate" << endl;}private:SchoolGril *m_pGirl;};class Proxy : public GiveGift{public:Proxy(SchoolGril *pGril){m_pPursuit = new Pursuit(pGril);}virtual void GiveDolls(){m_pPursuit->GiveDolls();}virtual void GiveFollowers(){m_pPursuit->GiveFollowers();}virtual void GiveChocolate(){m_pPursuit->GiveChocolate();}private:Pursuit *m_pPursuit;};int main(int argc, char *argv[]){SchoolGril *pGirl = new SchoolGril();pGirl->SetName("hanmeimei");Proxy *p = new Proxy(pGirl);p->GiveDolls();p->GiveFollowers();p->GiveChocolate();getchar();}

0 0
原创粉丝点击