目录
1. 定义代理模式
代理模式为另一个对象提供一个替身或占位符以控制对这个对象的访问
- 远程代理:主要为了解决不同地址空间对象访问的问题
- 虚拟代理: 为代理模式提供了一种"惰性初始化"的方法,从而使某些高代价对象在创建时减轻负担。
- 保护代理: 在代理类中,对某些方法进行限制访问,并不是所有的调用者都能够获得所有的服务。
1.1 Subject.h
class Subject{
public:
virtual void request()=0;
virtual ~Subject(){};
};
1.2 RealSubject.h
#include "Subject.h"
class RealSubject:public Subject{
public:
virtual void request()override final;
virtual ~RealSubject();
};
1.3 RealSubject.cpp
#include "RealSubject.h"
#include <iostream>
void RealSubject::request()
{
std::cout<<"function request"<<std::endl;
}
RealSubject::~RealSubject()
{
}
1.4 Proxy.h
#include "Subject.h"
#include "RealSubject.h"
class Proxy:public Subject{
public:
Proxy();
virtual void request()override final;
virtual ~Proxy();
private:
Subject *subject;
};
1.5 Proxy.cpp
#include "Proxy.h"
Proxy::Proxy()
{
subject=new RealSubject();
}
void Proxy::request()
{
subject->request();
}
Proxy::~Proxy()
{
delete subject;
}
1.6 main.cpp
#include <iostream>
#include "Proxy.h"
using namespace std;
int main()
{
Proxy proxy;
proxy.request();
return 0;
}
2. 远程代理
3. 虚拟代理