#include <iostream>
#include <string>
using namespace std;
class Subject
{
public:
virtual ~Subject(){};
virtual void Request() = 0;
};
class ConcreteSubject : public Subject
{
public:
ConcreteSubject(){}
~ConcreteSubject(){}
void Request()
{
cout<<"ConcreteSubject::Request"<<endl;
}
};
class Proxy
{
public:
Proxy(Subject *sub):m_sub(sub){}
~Proxy(){delete m_sub;}
void Request()
{
cout<<"Proxy::Request"<<endl;
m_sub->Request();
}
private:
Subject *m_sub;
};
int main()
{
Proxy proxy(new ConcreteSubject);
proxy.Request();
return 0;
}
///
#include <iostream>
#include <string>
using namespace std;
class Subject
{
public:
virtual ~Subject(){}
virtual void print() = 0;
};
class ConcreteSubject : public Subject
{
public:
void print()
{
cout<< "ConcreteSubject::print"<<endl;
}
};
class Proxy : public Subject
{
public:
Proxy(Subject *sub):m_sub(sub){}
void print()
{
m_sub->print();
cout<< "Proxy::print()"<<endl;
}
~Proxy(){delete m_sub;}
private:
Subject *m_sub;
};
int main()
{
Proxy proxy(new ConcreteSubject);
proxy.print();
return 0;
}