Proxy(代理)–对象结构型模式

一、意图
为其他对象提供一种代理以控制对这个对象的访问。

二、动机
1.在面向对象系统中,有些对象由于某种原因(比如对象创建的开销很大,或者某些操作需要安全控制,或者需要进程外的访问等),直接访问会给使用者、或者系统结构带来很大麻烦。
2.如何在不失去透明操作对象的同时来管理/控制这些对象特有的复杂性?增加一层间接层是软件开发中常见的解决方式。

三、适用性
1.远程代理(Remote Proxy)为一个对象在不同的地址空间提供局部代表。
2.虚代理(Virtual Proxy)根据需要创建开销很大的对象。
3.保护代理(Protection Proxy)控制对原始对象的访问。
4.智能指引(Smart Reference)取代了简单的指针,它在访问对象时执行一些附加操作。

四、结构

这是运行时刻一种可能的代理结构的对象图。

五、效果
Proxy模式在访问对象时引入了一定程度的间接性。
1.Remote Proxy可以隐藏一个对象存在于不同地址空间的事实。
2.Virtual Proxy可以进行最优化,例如根据要求创建对象。
3.Protection Proxies和Smart Reference都允许在访问一个对象时有一些附加的内务处理。

六、实现
1.重载C++中的存取运算符。
2.Proxy并不总是需要知道实体的类型。

七、要点总结
1.“增加一层间接层”是软件系统中对许多复杂问题的一种常见解决方法。在面向对象系统中,直接使用某些对象会带来很多问题,作为间接层的Proxy对象便是解决这一问题的常用手段。
2.具体proxy设计模式的实现方法、实现粒度都相差很大,有些可能对单个对象做细粒度的控制,入copy-on-wirte技术,有些可能对组件模式提供抽象代理层,在架构层次对对象做proxy。
3.Proxy并不一定要求保持接口完整的一致性,只要能够实现间接控制,有时候损及一些透明性是可以接受的。

八、相关模式
Adapter:适配器Adapter为它所适配的对象提供一个不同的接口。想反,代理提供了与它实体相同的接口。然而,用于访问保护的代理可能会拒绝执行实体会执行的操作,因此,它的接口实际上可能只是实体接口的一个子集。
Decorator:尽管decoratro的实现部分与代理相似,但decortor的目的不一样。Decorator为对象添加一个或多个功能,而代理则控制对对象的访问。
代理的实现与decorator的实现类似,但是在相似程度傻姑娘有所差别,Protection Proxy的实现可能与decorator的实现差不多。另一方面,Remote Proxy不包含对实体的直接引用,而只是一个间接引用,如“主机ID,主机的局部地址。”Virtual Proxy开始的时候使用一个间接引用,例如一个文件名,但最终将获得并使用一个直接引用。

九、举例说明
找工作时找HR就是直接访问,找猎头就是代理。

本文为李建忠设计模式视频的笔记以及《设计模式-可复用面向对象的软件的基础》和自己的部分见解

Proxy(代理)--对象结构型模式相关推荐

  1. 设计模式十三:proxy(代理)——对象结构型模式

    proxy(代理)--对象结构型模式 1.意图 为其他对象提供一种代理以控制这个对象的访问 2.动机 对一个对象进行访问控制的一个原因是为了只有在我们确实需要这个对象时才对它进行创建和初始化. 3.适 ...

  2. Adapter(适配器)--类对象结构型模式

    Adapter(适配器)–类对象结构型模式 一.意图 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本接口不兼容而不能一起工作的那些类可以一起工作. 二.动机 1.在软件系统中, ...

  3. 设计模式七:Adapter(适配器)——类对象结构型模式

    结构型模式: 结构型模式设计到如何组织类和对象以获得更大的结构. 结构型类模式: 采用继承机制来组合接口或实现.简单的例子是采用多重继承,这一模式尤其有助于多个独立开发的类库协同工作. 结构型对象模式 ...

  4. Flyweight(享元)--对象结构型模式

    Flyweight(享元)–对象结构型模式 一.意图 运行共享技术有效地支持大量细粒度的对象. 二.动机 1.在软件系统采用纯粹对象方案的问题在于大量细粒度的对象会很快充斥在系统中,从而带来很高的运行 ...

  5. Facade(外观)--对象结构型模式

    Facade(外观)–对象结构型模式 一.意图 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 二.动机 1.上述左边方案的问题在于组 ...

  6. Decorator(装饰)--对象结构型模式

    Decorator(装饰)–对象结构型模式 一.意图 1.动态地给一个对象添加一些额外的职责.就增加功能来说,Decorator模式相比生成子类更为灵活. 二.动机 1.在某些情况下我们可能会&quo ...

  7. Composite(组合)--对象结构型模式

    Composite(组合)–对象结构型模式 一.意图 将对象组合成树形结构以表示"部分-整体"的层次结构.Composite使得用户对单个对象和组合对象的使用具有一致性. 二.动机 ...

  8. Proxy 代理模式 对象结构型模式

    1.意图 为其它对象提供一种代理以控制对这个对象的访问. 2.别名 Surrogate 3.动机 对一个对象进行访问控制的一个原因是为了只有在我们确实需要这个对象时才对它进行创建和初始化.我们考虑一个 ...

  9. Bridge模式——对象结构型模式

    今天看了Bridge模式,对其进行简单的总结,并给出几篇通俗易懂的文章链接. (一)意图--将抽象部分和它的实现部分分离,使它们都可以独立地变化. 适用于从多维度描述的类型,拆解开来,使其能沿着各维度 ...

最新文章

  1. “AI理论之父应该是哥德尔”,LSTM之父再抛惊人观点,网友:他有点走火入魔...
  2. NHibernate之旅(10):探索父子(一对多)关联查询
  3. 重置mysql密码的命令
  4. 分布式一致性hash算法
  5. #pragma pack(n)和sizeof求结构的大小
  6. SpringCloud微服务全栈实战讲解 - 公开课笔记
  7. 自动工作负载信息库 AWR
  8. 枚举类型转换成字符串
  9. Airbnb 弃用之后,我们还应该用 React Native 吗?
  10. python爬虫步骤-Python爬虫的步骤和工具
  11. vs2008 清理后再编译后卡顿_更新后,竟有这么“严重”的后果?
  12. [转]MFC与Qt的内存管理
  13. C# CefSharp 可监听请求等
  14. HTML+CSS实现个人简历
  15. 备考通信复试过程中的一些知识点总结梳理——移动通信系统Ⅰ
  16. Zabbix 安装教程
  17. java更改图片小于32kb_echarts上传图表图片到Java 后台保存出来是空白图片?
  18. c#设置导出Excel的列宽
  19. RL 笔记(3)PPO(Proximal Policy Optimization)近端策略优化
  20. 第九周项目四----广义表算法库及应用1

热门文章

  1. C#中static void Main(string[ ] args)中的作用及解释
  2. linux之systemctl设置自定义服务
  3. Android之什么时候调用onSaveInstance方法的时候(为什么按Home键盘会调用,按Back不调用)
  4. Android之判断网络状态(网络的连接,改变,和判断2G/3G/4G)
  5. 重庆大学计算机课程设计,计算机组成原理课程设计报告重庆大学.doc
  6. 个人空间风格模版php,ThinkPHP 模板布局
  7. 如何在html里加入验证码_如何把crc校验加入到对应的程序里?看高手怎么做
  8. 原来医生的处方不是随便乱写的...
  9. 当女朋友问你会不会出轨的时候,该怎么回答?
  10. 值得收藏的Python小技巧:这17个骚操作你都OK吗?