以下代码来源: 设计模式精解-GoF 23种设计模式解析附C++实现源码

//Proxy.h

#pragma once
class Subject
{
public:
virtual ~Subject();
virtual void Request() = ;
protected:
Subject();
}; class ConcreateSubject:public Subject
{
public:
~ConcreateSubject();
ConcreateSubject();
void Request();
protected:
private:
}; class Proxy {
public:
Proxy();
Proxy(Subject* sub);
~Proxy();
void Request();
protected:
private:
Subject* _sub;
};

//Proxy.cpp

#include"Proxy.h"
#include<iostream> Subject::Subject(){}
Subject::~Subject(){}
void Subject::Request()
{
std::cout << "Subject Request" << std::endl;
} ConcreateSubject::ConcreateSubject(){}
ConcreateSubject::~ConcreateSubject(){}
void ConcreateSubject::Request()
{
std::cout << "ConcreateSubject Request" << std::endl;
}
Proxy::Proxy(){}
Proxy::Proxy(Subject* sub)
{
_sub = sub;
}
void Proxy::Request()
{
std::cout << "代理Proxy Request" << std::endl;
_sub->Request();
}
Proxy::~Proxy()
{
delete _sub;
}

//main.cpp

#include"Proxy.h"
#include<iostream> int main(int args, char* argv)
{
Subject* sub = new ConcreateSubject();
Proxy* p = new Proxy(sub);
p->Request();
return ;
}

最新文章

  1. ABP源码分析十一:Timing
  2. C# 字符串处理
  3. Linux软件安装为什么名字不一样
  4. linux下的基本网络配置
  5. [51NOD1007] 正整数分组(DP,记忆化搜索)
  6. JQ 选择器大全
  7. Catalog和Schema
  8. 如何隐藏 QLPreviewController 的 Action 按钮?
  9. webpack2系列step1
  10. Python--day06(深浅拷贝、元组、字典、集合)
  11. 分别用命令行、NetBeans IDE 8.2实现firstcup 项目部署
  12. cmd下的一些小技巧
  13. Mybatis 缓存失效的几种情况
  14. Cookiecutter: 更好的项目模板工具:(3)高级用法
  15. 性能监控(3)–linux下的iostat命令
  16. Redis 学习之路 (010) - redis命令手册
  17. Ceph 存储集群 - 搭建存储集群
  18. 关于eclipse创建java项目时产生的.settings文件:
  19. Java知识点整理(二)
  20. 微信小程序开发(二)创建小程序

热门文章

  1. 搭建部署Docker
  2. 腾讯云大学 x CODING | 当 DevOps 邂逅云原生
  3. 【bzoj4671】异或图(容斥+斯特林反演+线性基)
  4. 数组类的创建——DynamicArray.h
  5. 2019年跨越速递Java工程师笔试题
  6. ubuntu 安装谷歌浏览器
  7. lxml
  8. Python爬虫实战教程:爬取网易新闻
  9. 使用dom4j类操作xml文档
  10. Specify Action Settings 指定按钮设置