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;

}

运行结果如下:

李娇娇送你娃娃


目录
相关文章
|
iOS开发 MacOS Python
在Mac 上搭建Pygame开发环境(含安装错误的解决办法)
在Mac 上搭建Pygame开发环境(含安装错误的解决办法)
1322 0
|
9月前
|
机器学习/深度学习 算法 关系型数据库
强化学习:动态规划求解最优状态价值函数——手把手教你入门强化学习(四)
本文介绍了基于模型的强化学习算法,重点讲解动态规划(DP)。动态规划通过分解问题为子问题求解状态价值函数,利用贝尔曼期望方程迭代更新。其核心性质包括最优子结构和重叠子问题,适用于已知转移概率和奖励的MDP场景。文章回顾了前期强化学习基础,并展望了后续内容如蒙特卡罗法。适合初学者系统了解强化学习算法原理与应用。
303 7
|
Oracle Java 关系型数据库
实时计算 Flink版操作报错合集之本地打成jar包,运行报错,idea运行不报错,是什么导致的
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
269 6
|
12月前
|
弹性计算 运维 安全
安全无处不在-aliyun云服务诊断评测
我是一位个人开发者,热爱编写博客分享技术知识,对阿里云ECS十分感兴趣,将博客部署在其上,欢迎访问[乙太的小屋](https://www.oisec.cn/)。为了提升网站安全性,我启用了阿里云的“云资源健康状态及诊断”功能,能实时排查并解决如网站无法访问、错误配置、安全风险等问题,极大提升了运维效率和安全性。建议增加按流量计费的实时预估和阈值设置,防止CC攻击和DDoS带来的高额费用。推荐更多人使用此工具,链接:[阿里云诊断工具](https://help.aliyun.com/zh/management-console/what-is-cloud-service-diagnostics)。
184 9
|
监控 安全 数据管理
管理员工上网,这三款上网行为管理软件帮你搞定
企业管理者可借助WorkWin、Net Nanny和WebWatcher等上网行为管理软件提升员工工作效率。这些工具能监控员工行为,保护公司知识产权,细化权限管理,防止数据泄露,优化时间分配,支持移动部署,确保工作安全,并通过USB管理和带宽控制强化网络安全。实时监控和远程管理则加速问题解决,促进团队协作。Net Nanny和WebWatcher提供过滤、监控及易用的管理界面,助力企业有效管理员工上网行为。
409 1
|
算法 数据可视化 数据挖掘
MATLAB中常用的数学函数及其应用示例
MATLAB中常用的数学函数及其应用示例
|
机器学习/深度学习 自然语言处理
解析GPT-3、GPT-4和ChatGPT关系-迈向自然语言处理的新高度“
解析GPT-3、GPT-4和ChatGPT关系-迈向自然语言处理的新高度“
618 1
|
设计模式 定位技术 开发工具
探索iOS开发:从初级到高级的旅程
本文将深入探讨iOS开发的各个方面,从基础知识到高级技术,以及如何从初级开发者成长为高级开发者。我们将讨论各种工具、技术和策略,以帮助你在iOS开发领域取得成功。无论你是刚刚开始学习iOS开发,还是已经有一些经验并希望提升你的技能,这篇文章都将为你提供有价值的信息和建议。
|
数据采集 安全 测试技术
代理IP通俗解读,一文说透代理IP的基础知识与实际应用
代理IP是中转IP地址,用于在网络通信中隐藏用户真实IP,保障浏览匿名性。它在爬虫抓取、市场情报、广告管理和网络安全等方面有广泛应用。例如,代理IP能帮助网络爬虫避免IP封锁,企业收集市场信息,管理广告投放,保护在线隐私,穿越地理限制,以及合法绕过CAPTCHA和IP封锁。代理IP是提升网络效率和安全的重要工具。
|
机器学习/深度学习 计算机视觉
人脸检测
人脸检测
718 2