文章目录
3、怎样使用代理模式?
初级,boy找代理追girl:《大话设计模式》C++实现:07 代理模式(一)
升级,公共接口,真实实体,代理
4、实例
1、ISubject.h
#pragma once
class ISubject
{
public:
virtual void Request() = 0;
};
2、RealSubject.h
#pragma once
#include "ISubject.h"
#include <iostream>
using namespace std;
class RealSubject :
public ISubject
{
public:
virtual void Request() override;
};
void RealSubject::Request()
{
cout << "真实的请求" << endl;
}
3、Proxy.h
#pragma once
#include "ISubject.h"
#include "RealSubject.h"
class Proxy :
public ISubject
{
public:
~Proxy();//为释放指针成员变量,特意增加一个析构函数,在定义Proxy的地方(new的对象,delete;普通的对象,跳出定义的作用域时会自行进入析构函数)。
virtual void Request() override;
private:
RealSubject* pRealSubject{ nullptr };
};
Proxy::~Proxy()
{
if (nullptr != pRealSubject)
{
delete pRealSubject;
pRealSubject = nullptr;
}
}
void Proxy::Request()
{
if (nullptr == pRealSubject)
{
pRealSubject = new RealSubject();
}
pRealSubject->Request();
}
4、main.cpp
#include"Proxy.h"
#include"RealSubject.h"
void test()
{
cout << "========test()========" << endl;
Proxy* pProxy = new Proxy();
pProxy->Request();
delete pProxy;
pProxy = nullptr;
}
void test1()
{
cout << "========test1()========" << endl;
Proxy p1;
p1.Request();
}
int main()
{
test();
test1();
system("pause");
return 0;
}
此为《大话设计模式》学习心得系列 P63~~