6.代理模式

简介: 1代理模式的核心内容是: A:最终追求的对象:SchoolGirl B:实际送礼物的类:Pursuit C:代理中含有一个Pursuit对象,实际通过调用它来送礼物。 2代理模式的作用:通过代理实现本应该自己做的事儿。 3代理模式具体描述 代理模式:代理模式给某一个对象提供一个代理对象, 并由代理对象控制对源对象的引用。 代理就是一个

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;

}

运行结果如下:

李娇娇送你娃娃


目录
相关文章
|
4月前
结构型 代理模式
结构型 代理模式
19 0
|
1月前
|
缓存 数据安全/隐私保护 C++
【C++】—— 代理模式
【C++】—— 代理模式
|
2月前
|
设计模式 缓存 安全
设计模式-代理模式(静态代理、动态代理、cglib代理)、代理模式和装饰者模式的区别
设计模式-代理模式(静态代理、动态代理、cglib代理)、代理模式和装饰者模式的区别
53 1
|
4月前
|
Java Spring
代理模式
代理模式
32 0
|
9月前
|
安全
代理模式——为他人做嫁衣裳
代理模式——为他人做嫁衣裳
|
7月前
|
Java 网络安全 Maven
代理模式的运用
代理模式的运用
29 0
|
10月前
|
设计模式 JavaScript
关于代理模式我所知道的
关于代理模式我所知道的
57 0
|
10月前
|
Java Spring
代理模式你了解多少
代理模式你了解多少
52 0
|
11月前
|
Arthas Java 测试技术
结构型模式-代理模式
结构型模式-代理模式
52 0
|
缓存 Java Spring
代理模式和装饰器模式的区别
让别人帮助你做你并不关心的事情,叫代理模式,样例:透过Spring AOP来深入理解代理模式 为让自己的能力增强,使得增强后的自己能够使用更多的方法,拓展在自己基础之上的功能的,叫装饰器模式,样例:装饰器模式(Java)