您的位置:首页 > 其它

设计模式Proxy的实现源码

2010-05-10 17:12 204 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: