设计模式总篇-代理模式

#define __CRT_SECURE_NO_WARNINGS
/*
/*
@作者:莫忘输赢
@时间:
2020/2/10 14:06
@版本:v1

@代理模式
@作用
动态的给对象添加一些额外的职责。
@优点 
      远程代理:隐藏一个对象在不同地址空间的事实
	  虚拟代理:通过存放需要很长时间实例化对象
	  安全代理:通过控制真是对象的访问权限
	  智能引用:当调用真实的对象时,代理处理另外一些事
*/
#include<iostream>
//#include<vld.h>
//定义接口
class Interface
{
public:
	virtual void Request() = 0;
};
//真实类
class RealClass : public Interface
{
public:
	virtual void Request()
	{
		std::cout << "真实的请求" << std::endl;
	}
};
//代理类
class ProxyClass : public Interface
{
private:
	RealClass *m_realClass;
public:
	ProxyClass()
	{
		m_realClass = nullptr;
	}
	~ProxyClass()
	{
		if (m_realClass != nullptr)
		{
			delete m_realClass;
			m_realClass = nullptr;
		}
	}
	virtual void Request()
	{
		m_realClass = new RealClass( );
		m_realClass->Request( );
	}
};
//客户端
int main()
{
	ProxyClass *proxyClass = new  ProxyClass();
	proxyClass->Request();

	if (proxyClass != nullptr)
	{
		delete proxyClass;
		proxyClass = nullptr;
	}

	return 0;
}


发布了141 篇原创文章 · 获赞 1 · 访问量 5325

猜你喜欢

转载自blog.csdn.net/wjl18270365476/article/details/104410034