代理模式:为其他对象提供代理,以控制对这个对象的访问
代理模式的适用场景
- 远程代理,也就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空降的事实。
- 虚拟代理,根据需要创建开销很大的对象,通过它来存放实例化需要横长时间的真实对象。
- 安全代理,用来控制真实对象访问时的权限
- 智能指引,是指当调用真实的对象时,代理处理另外一些事
代理对象中保存真实对象的引用,所以可以通过代理实现真实对象啊的一些目的
#include <iostream>
#include <string>
using namespace std;
/*
A 要访问一个国外的网站,但是自己的ip 不允许访问这个网站
但是A 可以访问 B
B 可以访问这个网站。
这时候,A 可以请求B 去代替自己去访问国外的网站,然后将下载一些自己需要的资源
*/
class Inter
{
public:
virtual void Show() = 0;
};
class A:public Inter
{
public:
A(string str):URL(str){}
string URL;
void Show() { cout << "this is A :" << URL << endl; }
};
class B:public Inter
{
public:
B(string str):a(str){}
A &a;
void Show() { a.Show(); }
};
int main()
{
string str = "www.baidu.com";
B proxy(str);
proxy.Show();
return 0;
}