《大话设计模式》读书笔记(C++代码实现) 第七章:代理模式

代理模式(Proxy)

  为其他对象提供一种代理以控制对这个对象的访问。

 

  

// ProxyTest01.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;


//想要追求的姑娘
class SchoolGirl
{
public :
    string name;
};

//赠送礼物
class IGiveGift
{
public :
    virtual void GiveDolls() = 0;
    virtual void GiveFlowers() = 0;
    virtual void GiveChocolate() = 0;
};

//追求者,具体表现是送给喜欢的姑娘礼物
class Pursuit : public IGiveGift
{
private :
    SchoolGirl mm;
public :
    //Pursuit(){}
    Pursuit(SchoolGirl mm)
    {
        this->mm = mm;
    }
public :
    void GiveDolls()
    {
        cout<<mm.name<<":送你洋娃娃"<<endl;
    }
    void GiveFlowers()
    {
        cout<<mm.name<<":送你鲜花"<<endl;
    }
    void GiveChocolate()
    {
        cout<<mm.name<<":送你巧克力"<<endl;
    }
};

//代理,帮追求者来做事,表现也是送东西给姑娘,当然是代追求者送的
class Proxy : public IGiveGift
{
private :
    Pursuit *pursuit;
public :
    ~Proxy(){ delete pursuit; }
    Proxy(SchoolGirl mm)
    {
        pursuit = new Pursuit(mm);
    }
public :
    void GiveDolls()
    {
        pursuit->GiveDolls();
    }
    void GiveFlowers()
    {
        pursuit->GiveFlowers();
    }
    void GiveChocolate()
    {
        pursuit->GiveChocolate();
    }
};

int _tmain(int argc, _TCHAR* argv[])
{
    SchoolGirl mm;
    mm.name = "美女";

    //追求者亲自来追女生 
    //Pursuit p(mm);
    //p.GiveDolls();
    //p.GiveFlowers();
    //p.GiveChocolate();

    //代理来代某个人来追女生 
    Proxy proxy(mm);
    proxy.GiveDolls();
    proxy.GiveFlowers();
    proxy.GiveChocolate();

    system("pause");
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张欣-男

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值