#pragma once
#include <iostream>
class Object
{
public:
Object();
virtual ~Object();
virtual void request() = 0;
};
class RealObject : public Object
{
public:
RealObject() {};
void request()
{
std::cout << "RealObject" << std::endl;
};
};
class Proxy
{
public:
Proxy() {};
virtual~ Proxy()
{
if (realObject)
{
delete realObject;
}
};
void request()
{
if (realObject == nullptr)
{
realObject = new RealObject();
}
realObject->request();
};
RealObject* realObject = nullptr;
};
int main()
{
Proxy* proxy = new Proxy();
proxy->request();
return 0;
}