标签:
代理模式:为其他对象提供一种代理以控制对这个对象的访问。
#include "stdafx.h" #include <memory> #include <iostream> using namespace std; class Subject { public: virtual void Request(void) = 0; }; class RealSubject : public Subject { public: virtual void Request(void) { cout << "This is real request." << endl; } }; class Proxy : public Subject { public: virtual void Request(void) { if (nullptr == subject_) { subject_ = make_shared<RealSubject>(); } subject_->Request(); } private: shared_ptr<Subject> subject_; }; int main() { shared_ptr<Subject> obj = make_shared<Proxy>(); obj->Request(); return 0; }
代理模式使用的场合:
1、远程代理,也就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实
2、虚拟代理,是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象
3、安全代理,用来控制真实对象访问时的权限
4、智能指引,是指当调用真实的对象时,代理处理另外一些事。
标签:
原文地址:http://www.cnblogs.com/cauchy007/p/5347605.html