• Proxy


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

    2 别名:surrogate

    3 动机:只有在确实需要这个对象时才创建和初始化。文档编辑器一个很大的图形对象,没必要一开始就创建。

    4 适用性:

       需要用比较通用和复杂的对象指针代替简单的指针的时候,使用Proxy模式。

       1)远程代理 为一个对象在不同的地址空间提供局部代表

       2)虚代理 根据需要创建开销很大的对象。ImageProxy属于这种

       3)保护代理  控制对原始对象的访问。  访问保护

       4)智能指引 取代了简单的指针,访问对象时执行一些附加操作。用途:

           . 对指向实际对象的引用计数,这样当该对象没有引用时,可以自动释放它。

           . 当第一次引用一个持久对象时,将它装入内存

           . 访问一个实际对象前,检查是否已经锁定了它,确保其他对象不能改变它。

    5 参与者:

       . Proxy 

          保存一个引用使得代理可以访问实体。

          提供一个与Subject的接口相同的接口,代理可用来替代实体

          控制对实体的存取,可能负责创建和删除它

          其他功能依赖于代理的类型:

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

          . 虚代理 缓存实体的附加信息,以便延迟对它的访问。

          . Protection Proxy检查调用者是否具有实现一个请求所必须的访问权限。

       . Subject

         定义RealSubject和Proxy的共用接口,在任何使用RealSubject的地方都可以使用Proxy。

       . RealSubject

         定义Proxy所代表的实体

    6 协作:

       代理根据其种类,在适当的时候向RealSubject转发请求

    7 效果:

       1)远程代理:隐藏一个对象存在于不同地址空间的事实。

       2)虚代理  可以进行最优化,根据需求创建对象

       3)保护代理和智能指针 附加内务处理

    Proxy还可以隐藏另一种称之为写时复制的优化方式。代理延迟拷贝过程,只有修改的时候才拷贝。

       C++重载->和*运算法

       有些情况不能重载操作符,因为有些代理需要清楚地知道调用了哪个操作。

       在动机中处理虚代理时,图像在一个特定的时刻被装载——也就是在Draw操作被调用时——而不是在只要引用这个图像就装载它。

       重载访问操作符无法做这样的区分

       Proxy并不总是需要知道实体的类型

    8 相关模式:

       Adapter:适配器为它所适配的对象提供了一个不同的接口。 代理提供的与实体相同的接口。

       尽管Decorator的实现部分与代理很像,decorator目的不一样。decorator为对象添加一个或多个功能,而代理则控制对对象的访问。

       

  • 相关阅读:
    Silverlight 2中实现文件上传和电子邮件发送
    Silverlight结合Web Service进行文件上传
    silverlight DataGrid 内嵌ComboBox 实现加载和保存
    silverlight 使用IValueConverter 转换
    检测场所条件查询
    代码中的坏味道
    Prism初研究之Bootstrapper
    Prism初研究之简介
    编写可读代码的艺术
    ffmpeg怎么样处理网络流
  • 原文地址:https://www.cnblogs.com/criticalsection/p/5726710.html
Copyright © 2020-2023  润新知