• 【结构型】Proxy模式


        代理模式是指为其他对象提供代理来控制对象的访问。这种手段有时候可以给我们带来许多好处。如:通过代理可以实现异步响应处理;通过代理可以起到保护或限制对象的使用的作用,从而提高安全性。

        在设计上,用户使用代理对象与直接使用被代理对象,应该没什么差异。因此,代理对象的设计,需要实现被代理对象的相应接口。模式的类关系结构图参考如下:

        模式的编码结构参考如下:

     1 namespace proxy
     2 {
     3     class Target
     4     {
     5     public:
     6         virtual void action() {}
     7 
     8     };//class Target
     9 
    10     class ConcreteTarget : public Target
    11     {
    12     public:
    13         virtual void action() { /*some code here........*/ }
    14 
    15     };//class ConcreteTarget
    16 
    17     class ProxyTarget : public Target
    18     {
    19     public:
    20         virtual void action() {
    21             // do everything that you want to do.
    22             // such as: you can call _target->action() directly.
    23             // such as: you can do nothing here........
    24             // such as: ........
    25         }
    26 
    27     private:
    28         ConcreteTarget* _target;
    29 
    30     };//class ProxyTarget
    31 
    32 }//namespace proxy
    Proxy模式编码结构参考

        代理技术的应用是非常广泛的。比如:游戏中大图像加载时,多数情况下都较为卡顿,通过代理技术,可实现图像的异步加载,而逻辑功能照常动作。什么时候图像加载完成,什么时候才显示出来。再如:上网时,公司网关设置了防火墙,某些网站访问不了。通过Http代理,绕过网关从而访问你想访问的网站。又如:某些数据对格式要求非常严格或者数据本身十分重要,需要提高安全性才能访问,此时也可通过代理技术来达到验证、提高访问数据安全性等目的。

        因此,代理多数情况下可分为如下几类:

        1) 远程地址空间访问代理(Remote Proxy):为对象访问不同地址空间提供局部代表;

        2) 虚代理(Virtual Proxy):根据需求创建开销较大的对象;

        3) 保护代理(Protection Proxies):控制对原始对象的访问;

        4) 智能代理(Smart Reference Proxy):取代直接对对象指针的使用,从而可以执行一些额外附加的操作,如:引用计数等。

  • 相关阅读:
    怎么让图片居中显示?
    上传代码出现弹出框“请确保已在git中配置您的user.name和user.email”解决方法
    window.open()下载文件: 在当前页面打开方法
    修改网站颜色为黑白 (100% 灰度)/全页置灰
    ZMQ简单使用
    CCXT
    Python描述符详解
    自定义序列的修改、散列和切片
    使用__slots__类属性节省空间
    QGraphicsView实现虚拟摇杆
  • 原文地址:https://www.cnblogs.com/tongy0/p/5534669.html
Copyright © 2020-2023  润新知