设计模式之代理模式学习
来源:互联网 发布:淘宝上的自抽号怎么买 编辑:程序博客网 时间:2024/06/06 08:40
代理模式:为其他对象提供一种代理,以控制对这个对象的访问。
Subject类,被代理的类。定义了RealSubject和Proxy的接口。这样代理类就可以执行被代理的所有行为。RealSubject定义Proxy所代理的真实实体。Proxy类,代理类,与RealSubject有相同的接口。
#include<iostream>using namespace std;class Subject{public: Subject() { } virtual void function1()=0; virtual void function2()=0; virtual void function3()=0; };class RealSubject:public Subject{public: virtual void function1() { //function1的功能 std::cout<<"ReadSubject function1"<<endl; } virtual void function2() { //function2的功能 std::cout<<"ReadSubject function2"<<endl; } virtual void function3() { //function3的功能 std::cout<<"ReadSubject function3"<<endl; }};class Proxy:public Subject{public: RealSubject *rs;public: Proxy() { rs=new RealSubject; } virtual void function1() { rs->function1(); } virtual void function2() { rs->function2(); } virtual void function3() { rs->function3(); }} ;int main(int argc,char**argv){Proxy proxy;proxy.function1();proxy.function2();proxy.function3();return 0;}
通俗的说就是在访问对象时引入一定程度的间接性,正是有了这种间接,可以附加多种用途。
一般有以下几种应用:
一:远程代理,也就是为对象在不同的地址空间提供局部代表,这样就可以隐藏一个对象存在于不同地址空间的事实。
二:虚拟代理,根据需要创建开销很大的对象,通过它来存在实例化时间很长的真实对象。
三:安全代理,控制真是访问对象的权限。
四:智能指引,是指当调用真实对象时,代理处理另外一些事情。
现在看来代理模式也并不是多么新奇。很早之前就有接触,以前刚学习C++的时候接触过,《C++大学教程》里有介绍。记得当时是为了隐藏类的成员变量,因为当类创建好后,虽然类的实现可以以dll的形式提供,但是类的头文件还是必须提供给客户的,这就造成某些信息的泄漏。如成员变量。引入了代理后,仅仅只需要将代理的头文件暴露给客户,实现了隐藏被代理类的目的。
- 设计模式之代理模式学习
- 设计模式学习笔记之代理模式
- 设计模式学习之代理模式
- 设计模式之代理模式学习
- 设计模式学习笔记之代理模式
- 设计模式学习之代理模式
- 设计模式学习之--代理模式
- 设计模式之代理模式学习demo
- 设计模式学习之路-代理模式
- JavaScript学习之设计模式->代理模式
- java设计模式学习之代理模式
- 设计模式学习之代理模式
- 设计模式学习之代理模式
- 设计模式学习之代理模式
- 设计模式学习之代理模式
- 设计模式学习总结之代理模式
- C++设计模式学习之代理模式
- 设计模式学习之代理模式
- 堆和栈的区别 (转贴)
- IO端口和IO内存
- 异常总结
- Dm8168 多核通信
- 关于Java Servlet的中文乱码
- 设计模式之代理模式学习
- RED5 1.0RC1 在winxp/2003下的安装运行错误
- hdu1231 同1003
- java序列化
- Opencv学习笔记之新版本模块结构
- Linux下到IPC(进程间通信方法比较)
- DATA_SECTION pragma
- 程序性能优化之一----profiler
- php+js+mysql设计的仿webQQ-<5>IM窗体的实现