求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
 
十结构型设计模式—Proxy Pattern(代理模式)
 

2010-12-20 来源:网络

 

  定义
  为其他对象提供一个代理或地方以控制对这个对象的访问。当客户向proxy对象第一次提出请求时,proxy实例化真实的对象,并且将请求传给它,以后所有的客户请求都经由proxy传给封装了的真实对象。

 proxy模式分为4种,用得最多的是远程和虚拟代理模式:

 1. Virtual Proxy(虚拟代理):Proxy不会生成一个真实的耗费代理,直到非常必要时(首次有请求)。它用来存放花费大(实例需要很长时间)的真实对象。

 2. Remote Proxy(远程代理):本地的代理对象控制一个远程的对象。

 3. Protection Proxy(安全代理):代理检查调用真实对象所需要的权限。

 4. Smart Reference(聪明引用):当调用真实的对象时,代理处理另外一些事。

   (1). 计算真实对象的引用次数,在没有引用时自动释放。

   (2). 首次被引用时装载存留(保存在硬盘或内存、数据库等)的对象。

   (3). 在访问时检查真实对象是否锁定,确保没有其他对象会改变它。

 UML类图如下:

其中的类和对象的关系为:

 1. Proxy(代理):维护一个引用使得代理可以访问实体,如果RealSubject和Subject的接口相同,Proxy会引用Subject;提供一个与Subject的接口相同的接口,使得代理可以用来代替实体。有点想Adapter模式;控制对实体的访问并且负责创建及删除它;其他功能取决于Proxy的类型。

   * 远程代理:负责对请求及其参数进行编码,向不同的地址空间中的实体发送已编码的请求。

   * 虚拟代理:可以缓存实体的其他信息,以便延迟对它的访问。

   * 保护代理:检查调用者的请求是不是有所必需的权限。

 2. Subject(抽象实体接口):为RealSubject实体及Proxy代理定义相同的接口,使得RealSubject在任何地方都可以使用Proxy来访问。

 3. RealSubject(实体):定义Proxy代理的实体。

 典型应用的顺序图如下:

  实例1——数学代理
  下面的例子就是应用远程代理来访问另外一个应用程序域中的对象。

 UML类图如下:

 



MySQL索引背后的数据结构
MySQL性能调优与架构设计
SQL Server数据库备份与恢复
让数据库飞起来 10大DB2优化
oracle的临时表空间写满磁盘
数据库的跨平台设计
更多...   


并发、大容量、高性能数据库
高级数据库架构设计师
Hadoop原理与实践
Oracle 数据仓库
数据仓库和数据挖掘
Oracle数据库开发与管理


GE 区块链技术与实现培训
航天科工某子公司 Nodejs高级应用开发
中盛益华 卓越管理者必须具备的五项能力
某信息技术公司 Python培训
某博彩IT系统厂商 易用性测试与评估
中国邮储银行 测试成熟度模型集成(TMMI)
中物院 产品经理与产品管理
更多...