C++模式-Proxy
代理模式:为其他对象提供一种代理以控制对这个对象的访问。
代理模式:⒈远程代理 也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实(例如WEBSERVICES)
⒉虚拟代理 是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象(例如网页中的图片,通过虚拟代理来替代真实的图片,此时代理存储真实图片的路径和尺寸)
⒊安全代理 用来控制真实对象访问时的权限
⒋智能指引 指当调用真实对象时,代理处理另外一些事
类实现
- //Proxy.h
- #ifndef AFX_CLASS_SUBJECT
- #define AFX_CLASS_SUBJECT
- class Subject
- {
- public:
- virtual void Request()=0;
- };
- #endif
- #ifndef AFX_CLASS_REALSUBJECT
- #define AFX_CLASS_REALSUBJECT
- class RealSubject:public Subject
- {
- public:
- virtual void Request()
- {
- cout<< "真实的请求" << endl;
- }
- };
- #endif
- #ifndef AFX_CLASS_PROXY
- #define AFX_CLASS_PROXY
- class Proxy:public Subject
- {
- public:
- Proxy()
- {
- realSubject = NULL;
- }
- virtual void Request()
- {
- if( realSubject == NULL )
- {
- realSubject = new RealSubject();
- }
- realSubject->Request();
- }
- private:
- RealSubject *realSubject;
- };
- #endif
主函数实现:
- #include <iostream>
- #include <string>
- #include <conio.h>
- using namespace std;
- #include "proxy.h"
- int main( int argc , char *argv[] )
- {
- Proxy *proxy = new Proxy();
- proxy->Request();
- getch();
- return 1;
- }