1、Request接口类定义
#ifndef REQUEST_H
#define REQUEST_H
class Request
{
public:
virtual void Operation() = 0;
};
#endif
2、真正类RealSubject定义
#ifndef REALSUBJECT_H
#define REALSUBJECT_H
#include "Request.h"
class RealSubject : public Request
{
public:
RealSubject(char*);
~RealSubject();
void Operation();
private:
char* m_name;
};
#endif
3、真正类RealSubject实现
#include <stdio.h>
#include "RealSubject.h"
RealSubject::RealSubject(char* sname) : m_name(sname)
{
}
RealSubject::~RealSubject()
{
}
void RealSubject::Operation()
{
printf("RealSubject name: %s/n", m_name);
}
4、代理类RequestProxy 定义
#ifndef REQUESTPROXY_H
#define REQUESTPROXY_H
#include "Request.h"
#include "RealSubject.h"
class RequestProxy : public Request
{
public:
RequestProxy(char*);
~RequestProxy();
void Operation();
private:
RealSubject* m_rs;
};
#endif
5、代理类RequestProxy实现
#include <stdio.h>
#include "RequestProxy.h"
RequestProxy::RequestProxy(char* name)
{
m_rs = new RealSubject(name);
}
RequestProxy::~RequestProxy()
{
if(m_rs != NULL)
{
delete m_rs;
m_rs = NULL;
}
}
void RequestProxy::Operation()
{
printf("======RequestProxy========/n");
if(m_rs != NULL)
{
m_rs->Operation();
}
else
{
printf("RealSubject is null");
}
}
6、客户调用类Client
#include "Request.h"
#include "RequestProxy.h"
int main()
{
Request* rq = new RequestProxy("test");
rq->Operation();
return 0;
}