设计模式 --> (9)代理模式
2015-11-15 17:07
211 查看
代理模式
为其他对象提供一种代理以控制对这个对象的访问。
主要解决的问题是:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或 者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。
比如说C和A不在一个服务器上,A要频繁的调用C,我们可以在A上做一个代理类Proxy,把访问C的工作交给Proxy,这样对于A来说,就好像在直接访问C的对象。在对A的开发中我们可以把注意力完全放在业务的实现上。
有四种常用的情况:(1)远程代理,(2)虚代理,(3)保护代理,(4)智能引用。
[b]虚代理[/b]
根据需要创建一个资源消耗较大的对象,使得此对象只在需要时才会被真正创建。是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。
参考:http://blog.csdn.net/wuzhekai1985
为其他对象提供一种代理以控制对这个对象的访问。
主要解决的问题是:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或 者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。
比如说C和A不在一个服务器上,A要频繁的调用C,我们可以在A上做一个代理类Proxy,把访问C的工作交给Proxy,这样对于A来说,就好像在直接访问C的对象。在对A的开发中我们可以把注意力完全放在业务的实现上。
有四种常用的情况:(1)远程代理,(2)虚代理,(3)保护代理,(4)智能引用。
[b]虚代理[/b]
根据需要创建一个资源消耗较大的对象,使得此对象只在需要时才会被真正创建。是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。
#include <iostream> using namespace std; class Image { public: Image(string name): m_imageName(name) {} virtual ~Image() {} virtual void Show() {} protected: string m_imageName; }; class BigImage: public Image { public: BigImage(string name):Image(name) {} ~BigImage() {} void Show() { cout<<"Show big image : "<<m_imageName<<endl; } }; class BigImageProxy: public Image { private: BigImage *m_bigImage; public: BigImageProxy(string name):Image(name),m_bigImage(0) {} ~BigImageProxy() { delete m_bigImage; } void Show() { if(m_bigImage == NULL) m_bigImage = new BigImage(m_imageName); m_bigImage->Show(); } }; int main() { Image *image = new BigImageProxy("proxy.jpg"); //代理 image->Show(); //需要时由代理负责打开 delete image; return 0; }
参考:http://blog.csdn.net/wuzhekai1985
相关文章推荐
- oracle新建用户
- 第九周--数据结构--稀疏矩阵相加(之二)
- HTTP头部详解
- HDU 1559 最大子矩阵【最大子矩阵】
- Core Data系列六——Custom Migration
- C++设计模式[十三]命令模式
- android 学习记录
- 浅谈存储过程
- 最短路问题(dijkstral 算法)(优化待续)
- Day 8(11.15):游标操作指令
- 剑指offer 66题(上篇)
- Shell笔记
- 最短路问题(floyd算法)(优化待续)
- 第九周--数据结构--稀疏矩阵相加
- box-sizing
- Day 8(11.15):游标
- ubuntu下 安装git
- Orchard EventBus 事件总线及 IEventHandler作用
- 程序员养成之路--New Start
- android drawable资源总结