设计模式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;
}
#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;
}
相关文章推荐
- 设计模式adapter的C++实现源码
- 几种结构型的设计模式概析【下】——Flyweight模式,Facade模式和Proxy模式【C++实现】
- C#设计模式扩展——Meditor+Proxy模式实现
- 《第一行代码Java》接口实现代理设计模式(Proxy)笔记与代码
- 23种设计模式之python实现--代理(Proxy)模式
- [GoF设计模式]Proxy模式和Strategy模式的C++实现
- 常见设计模式的解析和实现(C++)文档及源码打包下载
- 常见设计模式的解析和实现(C++)之十-Proxy模式
- 23种设计模式的解析与C++实现及源码打包下载
- 设计模式学习——动态代理实现C#动态调用WebService(附源码)
- 设计模式之观察者模式(有源码简单实现及java函数简单实现)
- 设计模式builder的C++实现源码
- 23种设计模式之代理模式(结构型,1 Proxy,c++实现)
- 常见设计模式的解析和实现(C++)之十-Proxy模式
- 设计模式之Proxy模式(C++实现)
- 设计模式AbstractFactory的C++实现源码
- 设计模式flyweight的C++实现源码
- 详解设计模式中的proxy代理模式及在Java程序中的实现
- 设计模式精解-GoF 23种设计模式解析附C++实现源码
- Java代理设计模式(Proxy)的四种具体实现:静态代理和动态代理