6.代理模式

1代理模式的核心内容是:

A:最终追求的对象:SchoolGirl

B:实际送礼物的类:Pursuit

C:代理中含有一个Pursuit对象,实际通过调用它来送礼物。

2代理模式的作用:通过代理实现本应该自己做的事儿。

3代理模式具体描述

代理模式:代理模式给某一个对象提供一个代理对象,

并由代理对象控制对源对象的引用。

代理就是一个人或一个机构代表另一个人或者一个机构采取行动。

某些情况下,客户不想或者不能够直接引用一个对象,

代理对象可以在客户和目标对象直接起到中介的作用。

客户端分辨不出代理主题对象与真实主题对象。

代理模式可以并不知道真正的被代理对象,

而仅仅持有一个被代理对象的接口,这时候代理对象不能够创建被代理对象,

被代理对象必须有系统的其他角色代为创建并传入。

 

MM在网上聊天,一开头总是“hi, 你好”,

“你从哪儿来呀?”“你多大了?”“身高多少呀?”

这些话,真烦人,写个程序做为我的Proxy吧,

凡是接收到这些话都设置好了自己的回答,

接收到其他的话时再通知我回答,怎么样,酷吧。

4.代理模式类图

5.代码:

#include <iostream>

#include <string>

using namespace std;

//代理模式:代理模式给某一个对象提供一个代理对象,

//并由代理对象控制对源对象的引用。

//代理就是一个人或一个机构代表另一个人或者一个机构采取行动。

//某些情况下,客户不想或者不能够直接引用一个对象,

//代理对象可以在客户和目标对象直接起到中介的作用。

//客户端分辨不出代理主题对象与真实主题对象。

//代理模式可以并不知道真正的被代理对象,

//而仅仅持有一个被代理对象的接口,这时候代理对象不能够创建被代理对象,

//被代理对象必须有系统的其他角色代为创建并传入。

//

//MM在网上聊天,一开头总是“hi, 你好”,

//“你从哪儿来呀?”“你多大了?”“身高多少呀?”

//这些话,真烦人,写个程序做为我的Proxy吧,

//凡是接收到这些话都设置好了自己的回答,

//接收到其他的话时再通知我回答,怎么样,酷吧。

 

class SchoolGirl

{

public:

    string name;

};

 

class IGiveGift

{

public:

    virtual void giveDolls() = 0;

    virtual void giveFlowers() = 0;

};

 

//追求妹子的类

class Pursuit :public IGiveGift

{

private:

    SchoolGirl mm;

public:

    Pursuit(SchoolGirl m)

    {

        mm = m;

    }

    void giveDolls()

    {

        cout << mm.name << " 送你娃娃" << endl;

    }

    void giveFlowers()

    {

        cout << mm.name << " 送你鲜花" << endl;

    }

};

 

class Proxy :public IGiveGift

{

private:

    //隐藏了追求着,目标是代表追求着追妹子

    Pursuit gg;

public:

    Proxy(SchoolGirl mm) :gg(mm)

    {

        //gg=g;

    }

    void giveDolls()

    {

        gg.giveDolls();

    }

    void giveFlowers()

    {

        gg.giveFlowers();

    }

};

 

int main()

{

    SchoolGirl lijiaojiao;

    lijiaojiao.name = "李娇娇";

    //Pursuit zhuojiayi(lijiaojiao);

    Proxy daili(lijiaojiao);

 

    daili.giveDolls();

    cin.get();

    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、付费专栏及课程。

余额充值