设计模式-Proxy(结构型模式)
2024-09-06 08:33:45
以下代码来源: 设计模式精解-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 ;
}
最新文章
- ABP源码分析十一:Timing
- C# 字符串处理
- Linux软件安装为什么名字不一样
- linux下的基本网络配置
- [51NOD1007] 正整数分组(DP,记忆化搜索)
- JQ 选择器大全
- Catalog和Schema
- 如何隐藏 QLPreviewController 的 Action 按钮?
- webpack2系列step1
- Python--day06(深浅拷贝、元组、字典、集合)
- 分别用命令行、NetBeans IDE 8.2实现firstcup 项目部署
- cmd下的一些小技巧
- Mybatis 缓存失效的几种情况
- Cookiecutter: 更好的项目模板工具:(3)高级用法
- 性能监控(3)–linux下的iostat命令
- Redis 学习之路 (010) - redis命令手册
- Ceph 存储集群 - 搭建存储集群
- 关于eclipse创建java项目时产生的.settings文件:
- Java知识点整理(二)
- 微信小程序开发(二)创建小程序