定义:为其他对象提供一种代理以控制这个对象的访问,也叫做委托模式。

  咱们比作游戏,通俗讲代理模式就是,一个主题虚基类派生出两个子类,一个玩家类,实现相关操作,一个是代练类,代替执行玩家相关操作,代练类对象有个指向玩家类对象的指针,可以通过调用代练类对象,实现玩家不登录,游戏照样打怪升级。。。。  

using namespace std;
//游戏主题类
class Game
{
public:Game() {}virtual ~Game() {}virtual void begin_time() = 0;virtual void login() = 0;virtual void killBoss() = 0;virtual void upGrade() = 0;virtual void end_time() = 0;
};//游戏实例
class RealGame : public Game
{
public:RealGame(string username, string password) {this->userName = username;this->password = password;}~RealGame() {}//上线virtual void begin_time() { printf("开始时间: 2017/3/20 19:34\n"); }//登录virtual void login() { cout <<"用户: " <<userName<<"登录游戏"<< endl;}//打怪virtual void killBoss() { cout << userName << "打死领主\"锤王菠萝丁!\"" << endl;}//升级virtual void upGrade() { cout << userName << "升级到89级!" << endl;}//下线virtual void end_time() {cout <<"2017/3/20 21:12 玩家"<< userName << "退出游戏" << endl;}private:string userName;string password;
};//游戏代练者
class Proxy : public Game
{
public:Proxy(string userName, string password){pRealGame = new RealGame(userName, password);}~Proxy() {delete pRealGame;pRealGame = nullptr;}virtual void begin_time() {pRealGame->begin_time();}virtual void login(){pRealGame->login();}virtual void killBoss(){pRealGame->killBoss();}virtual void upGrade(){pRealGame->upGrade();}virtual void end_time(){pRealGame->end_time();}private:RealGame *pRealGame;
};int main()
{Game *m_game = new Proxy("张三","******");m_game->begin_time();m_game->login();m_game->killBoss();m_game->upGrade();m_game->end_time();delete m_game;m_game = nullptr;
}

转载于:https://www.cnblogs.com/Forever-Road/p/6591287.html

设计模式之代理模式(Proxy Pattern)相关推荐

  1. 二十四种设计模式:代理模式(Proxy Pattern)

    代理模式(Proxy Pattern) 介绍 为其他对象提供一个代理以控制对这个对象的访问. 示例 有一个Message实体类,某对象对它的操作有Insert()和Get()方法,用一个代理来控制对这 ...

  2. Java24种设计模式(第二种)--代理模式(Proxy Pattern)

    Java24种设计模式 (第二种) 一.代理模式(Proxy Pattern) 模式逻辑: 什么是代理模式呢?我很忙,忙的没空理你,那你要找我呢就先找我的代理人吧,那代理人总要知道 被代理人能做哪些事 ...

  3. 设计模式——代理模式(Proxy Pattern)之为别人做嫁衣

    代理模式Proxy Pattern 代理模式 1.背景 2.定义 3.特征 4.应用场景 5.实验案例 参考 代理模式 1.背景 假如说我现在想租一间房子,虽然我可以自己去找房源,做卫生检测等一系列的 ...

  4. 设计模式-代理模式(Proxy Pattern)

    设计模式-代理模式(Proxy Pattern) 文章目录 设计模式-代理模式(Proxy Pattern) 一.定义 二.概念解释 三.场景 四.实现 1.类图 2.代码实现 五.小结 六.动态代理 ...

  5. 三国杀与设计模式之代理模式(Proxy)

    本人原博地址:http://blog.saymagic.cn/blog.php?id=17 三国杀案例:在五人局中,作为反贼的黄月英借黄忠的刀杀作为忠臣的夏侯惇,从这句话中我们可以总结出一个成语对不对 ...

  6. 设计模式(结构型)之代理模式(Proxy Pattern)

    PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN.因为CSDN也支持MarkDown语法了,牛逼啊! [工匠若水 http://blog.csdn.net/yanbob ...

  7. JAVA设计模式Design Pattern→单例模式Singleton Pattern、工厂模式Factory Pattern、代理模式Proxy Pattern

    私有化构造函数的类可以提供相应的 "接口"(一般就是静态方法)来返回自己的唯一实例供外部调用,像这样的确保只生成一个实例的模式被称作单例模式. 工厂模式,一个模型,用来大规模的生产 ...

  8. 代理模式(Proxy Pattern)

    设计模式 - 吕震宇 .NET设计模式系列文章 薛敬明的专栏 乐在其中设计模式(C#) C#设计模式(13)-Proxy Pattern 一. 代理(Proxy)模式 代理(Proxy)模式给某一个对 ...

  9. 设计模式之代理模式(Proxy)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  10. 27代理模式(Proxy Pattern)

    直接与间接:    人们对复杂的软件系统常有一种处理手法,即增加一层间接层,从而对系统获得一种更为灵活. 满足特定需求的解决方案.                                    ...

最新文章

  1. Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
  2. chmod 4755和chmod 755的区别
  3. java 文件引用路径_JAVA项目引用文件路径问题
  4. 左手笛卡尔坐标系与左手笛卡尔坐标系区分
  5. mysql 二次 聚合,MySql-聚合查询
  6. P4288 [SHOI2014]信号增幅仪 最小圆覆盖
  7. argb可以和rgb同步吗_神光同步酷炫幻彩,安钛克光棱120 RGB风扇套装
  8. 开上帝视角,其实你也能
  9. 计算机网路vlan划分练习
  10. c语言判断闰年并输出该月天数,C语言宏定义实现闰年判断并输出指定月的天数...
  11. 玩转SpringCloud(F版本) 四.路由网关(zuul)
  12. linux双机热备软件 mysql,Linux Mysql 双机热备安装详解
  13. selenium基础自学七(获取超链接)
  14. 网络数据采集分析工具tcpdump定义抓包过滤器
  15. 问题 D: 分解质因数
  16. Location is not available,the folder or directory is corrupted and unreadable
  17. 这341句话,这么美,那么伤。
  18. 怎样让计算机背景图片变大,电脑上如何使照片调成1寸??excel调整背景图片大小...
  19. 第一周作业(零基础)
  20. Linux基础学习Day2之基本概念及操作

热门文章

  1. usaco letter game
  2. 简书php硬件交互,php设计模式——适配器模式
  3. 计算机科学NIP,NIP自然语言处理主要应用在哪些领域呢?
  4. 计算机网络实验可变长子网掩码,计算机网络实验3-子网掩码与划分子网实验报告.docx...
  5. mysql plsql 循环_PL/SQL for...loop循环语句
  6. tableau两个不同的图合并_Tableau可视化分析-业务常用图形绘制1
  7. Linux网络编程--TCP中的三次握手和四次挥手
  8. Linux软件包增量升级,Linux增量更新jar包内容
  9. c 远程编辑linux文件,makefile - 在远程Linux机器上编译C ++ - “检测到时钟偏差”警告...
  10. PCL基础4:PCLVisualizer可视化窗口显示