设计模式之代理模式 c++实现以及详解
来源:互联网 发布:仓鼠翻译软件 编辑:程序博客网 时间:2024/05/16 04:25
proxy模式
<1>
作用:
为其他对象提供一种代理以控制对这个对象的访问。
为其他对象提供一种代理以控制对这个对象的访问。
<2>
代理模式的应用场景:
如果已有的方法在使用的时候需要对原有的方法进行改进,此时有两种办法:
1、修改原有的方法来适应。这样违反了“对扩展开放,对修改关闭”的原则。
2、就是采用一个代理类调用原有的方法,且对产生的结果进行控制。这种方法就是代理模式。
使用代理模式,可以将功能划分的更加清晰,有助于后期维护!
如果已有的方法在使用的时候需要对原有的方法进行改进,此时有两种办法:
1、修改原有的方法来适应。这样违反了“对扩展开放,对修改关闭”的原则。
2、就是采用一个代理类调用原有的方法,且对产生的结果进行控制。这种方法就是代理模式。
使用代理模式,可以将功能划分的更加清晰,有助于后期维护!
<3>
结构图
代理类,含有一个指向RealSubject对象的指针
<4>
/*******************************************设计模式之代理模式 **小明同学让大黑同学替他跟一暗恋女生表白 **by hnust_xiehonghao 2014.5.22 14:16 *******************************************/#include <iostream>using namespace std;class Person //Subject{public:virtual func(){cout << "Person" << endl;}};class XiaoMing :public Person // RealSubject{public: virtual func() { cout << "XiaoMing love you!" << endl; }};class DaHei : public Person //proxy{XiaoMing XM;public:virtual func(){ cout << "I am DaHei ,xiaoming Let Me tell you something :" << endl; XM.func();}};int main(){ DaHei DH;//大黑对女孩说DH.func();return 0;}
参考大话设计模式
<5>
代理模式主要分为四类:
远程代理,虚代理,保护代理和智能引用。 其它还有挺多不常用的代理模式
1远程代理
负责对请求及其参数进行编码,并向不同地址空间中的实体发送已编码的请求;
调用代理的方法,会被代理利用网络转发到远程执行,并且结果会通过网络返回给代理,再由代理将结果转给客户。
2虚代理
可以缓存实体的附加信息,以便延迟对它的访问;
直到我们真正需要一个对象的时候才创建它,比如当加载图片时,我们打开不同的相册,才会去显示所选相册的图片。
当对象在创建前和创建中时,由虚拟代理来扮演对象的替身。对象创建后,代理就会将请求直接委托给对象。
浏览器就使用了代理
详细了解请参考http://blog.csdn.net/shuangde800/article/details/10324991
3保护代理
添加信息 检查调用者是否具有实现一个请求所必须的访问权限。
4智能引用代理
当一个对象被引用时,提供一些额外的操作,例如将对象被调用的次数记录下来等。
proxy模式不一定要保持接口的一致性。只要能够实现间接控制,有时候损及一些透明性是可以接受的
参考 http://blog.csdn.net/eclipsexys/article/details/8678646
http://www.jellythink.com/archives/301
0 0
- 设计模式之代理模式 c++实现以及详解
- 设计模式详解之代理模式
- 设计模式之原型模式 c++实现以及详解
- 设计模式之单例模式 c++实现以及详解
- 设计模式之代理模式(C++)
- 设计模式之代理模式,C++实现
- scala实现设计模式之代理模式
- C语言实现《设计模式之禅》之代理模式——普通代理
- 【设计模式】代理模式详解
- 【设计模式】代理模式详解
- 设计模式之动态代理 jdk实现
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之代理模式
- 设计模式之-代理模式
- 设计模式之 代理模式
- 设计模式之代理模式
- 百鸡问题
- STM32学习之路-用STM32库函数配置RCCc
- 成为编程高手的八大奥秘
- android示例之音乐播放器第四天
- hdu3980 Paint Chain SG函数
- 设计模式之代理模式 c++实现以及详解
- 背包九讲(来源于Tianyi cui)
- 黑马程序员--java反射机制分析
- hdu how many prime numbers 筛选法求素数
- 第五届省赛总结
- libgdx 仿微信打飞机完成版本(终结版)
- Chapter 4 的问题
- 获取iOS设备的内存状况
- AndroidUI组件之AlertDialog