代理模式(Proxy)
来源:互联网 发布:录制搞笑视频软件 编辑:程序博客网 时间:2024/06/04 23:20
代理模式,为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
优点:
代理对象可以在客户端和目标对象之间起到中介的作用,这样起到了保护目标对象的作用。
应用场景:
- 远程代理。为一个不同的地址空间的对象提供一个本地的代理对象。这个不同的地址空间可以是在同一台主机中,也可在不同的主机中。
- 虚拟代理。根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。这样可以达到性能的最优化,比如打开一个很大的HTML网页时。
- 安全代理。用来控制真实对象访问时的权限。一般用于对象应该有不同的访问权限的时候。
- 智能指针。是指当调用真实的对象时,代理处理另外一些事。如计算真实对象的引用计数,这样当该对象没有引用时,可以自动释放它;或当第一次引用一个持久对象时,将它装入内存;或在访问一个实际对象前,检查是否已经锁定它,以确保其他对象不能改变它。他们都是通过代理访问一个对象时附加一些内务处理。
Subject类,定义了RealSubject和Proxy的共用接口,这样就在任何使用RealSubject的地方都可以使用Proxy。
代码:
//Proxy.h
#include "stdafx.h"#include <iostream>#include <memory>using namespace std;class Subject{public : virtual void Request() = 0;};class RealSubject :public Subject{public : virtual void Request() { cout << "真实的操作:RealSubject" << endl; }};class Proxy :public Subject{private : shared_ptr <RealSubject > _pRealSubject;public : virtual void Request() { if (_pRealSubject == NULL) _pRealSubject = shared_ptr <RealSubject >(new RealSubject ); cout << "可以做一些内务处理!" << endl; _pRealSubject->Request(); }};
//ProxyMethod.cpp
// ProxyMethod.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "Proxy.h"int _tmain (int argc , _TCHAR * argv []){ shared_ptr <Proxy > pProxy( new Proxy()); pProxy->Request(); getchar(); return 0;}运行结果:
0 0
- 代理(Proxy)模式
- 代理(Proxy)模式
- 代理(Proxy)模式
- proxy(代理)模式
- 代理模式(Proxy)
- 代理模式(Proxy)
- 代理模式(Proxy)
- Proxy(代理模式)
- 代理(proxy)模式
- 代理模式(Proxy)
- Proxy(代理)模式
- 代理模式(PROXY)
- 代理模式(Proxy)
- 代理(proxy)模式
- 代理模式(Proxy)
- 代理(Proxy)模式
- 代理模式(Proxy)
- 代理模式(Proxy)
- Android内存问题分析一些命令
- MultiAbnormalit2(week12)
- Java 里把 InputStream 转换成 String 的几种方法
- Ubuntu 12.04 部署 PostGIS 2.1
- 数据结构与算法分析-Code Blocks中出现的找不到头文件的问题
- 代理模式(Proxy)
- Android animation 动画背景图自动播放的实现
- 批量修改表名
- win8.1系统下的ftp文件上传和下载
- android 控件 下拉列表(Spinner)
- vi常用命令
- 圆弧形ListView(CircleList)
- C++利用STL的stack将十进制转化为八进制
- 苹果零售店:全球最赚钱的零售空间