#include "StdAfx.h"
#include <SSTREAM>
#include<iostream>
#include<fstream>
#include<malloc.h>
#include <windows.h>
#include <list>
#include <map>
using namespace std;
class Subject
{
public:
virtual void Request()
{
printf("基类对象的请求....\n");
}
protected:
private:
};
class RealSubject:public Subject
{
public:
virtual void Request()
{
printf("真实类的请求....\n");
}
protected:
private:
};
class ProxySubject:public Subject
{//代理对象:
//远程代理,当对象处在不同的地址空间中,此时请求可以先用局部对象代表远程对象
//请求服务192.168.1.98的数据时候,由于内容缓存在192.168.1.99 中,我们可以采用跳转到192.168.1.99的空间
//虚拟代理,当我们请求很大的一个网页的时候,网页上的图片暂时不显示,而是先显示文字,当图像下载完毕了之后就直接显示图片
//安全代理,当我们访问的对象有权限的区分,则我们可以进行权限检测
//智能代理,我们在完成了真实的对象请求后,我们还可以做额外的事情,比如当用户登录浏览器的时候,我们可以提醒用户最近的帖子有新的回复
public:
ProxySubject():m_rs(NULL)
{
}
Subject* m_rs;
virtual void Request()
{
printf("代理模式下请求....\n");
if(m_rs)
m_rs->Request();
}
protected:
private:
};
int main(void)
{
Subject* pRealObj=new RealSubject();
ProxySubject pProxy;
pProxy.m_rs=pRealObj;
pProxy.Request();
return 0;
}
C++设计模式之代理模式(Proxy)
最新推荐文章于 2021-04-28 20:09:12 发布