zoukankan      html  css  js  c++  java
  • 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为对象添加一个或多个功能,而代理则控制对对象的访问。

       

  • 相关阅读:
    poj 1113 Wall 凸包的应用
    NYOJ 78 圈水池 (入门级凸包)
    Monotone Chain Convex Hull(单调链凸包)
    poj Sudoku(数独) DFS
    poj 3009 Curling 2.0(dfs)
    poj 3083 Children of the Candy Corn
    Python join()方法
    通过FISH和下一代测序检测肺腺癌ALK基因融合比较
    华大病原微生物检测
    NGS检测ALK融合大起底--转载
  • 原文地址:https://www.cnblogs.com/criticalsection/p/5726710.html
Copyright © 2011-2022 走看看