您的位置:首页 > 其它

代理模式(Proxy)

2014-09-15 16:30 183 查看
1. 目的

当不希望客户知道某个接口的具体实现类时,可以使用一个代理类,由代理类去获取实际实现接口的类,然后客户调用的是代理类的接口,然后代理类去调用实际实现类的接口。

2.代码

proxy.h

#ifndef PROXY_H_
#define PROXY_H_

class Interface
{
public:
virtual ~Interface();
virtual void request()=0;
};

class RealSubject:public Interface
{
public:
void request();
};

class Proxy:public Interface
{
public:
Proxy();
void request();
void setSubject(RealSubject&);
private:
RealSubject* real;
};


proxy.cpp

#include "Proxy.h"
#include <iostream>
using namespace std;

Interface::~Interface()
{}

void RealSubject::request()
{
cout<<"Real request "<<endl;
}

Proxy::Proxy():real(NULL)
{}

void Proxy::request()
{
if(real == NULL)
{
real = new RealSubject();
}

real->request();
}

void proxy()
{
Proxy p;

p.request();
}


执行结果:Real request
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: