当前位置:首页 > CN2资讯 > 正文内容

代理模式 Proxy

2天前CN2资讯

“接口隔离”模式

  • 在组件构建过程中,某些接口之间直接的依赖常常会带来很多问题、甚至根本无法实现。采用添加一层间接(稳定)接口,来隔离本来互相紧密关联的接口是一种常见的解决方案。
  • 典型模式
  • Facade
  • Proxy
  • Adapter
  • Mediator
  • 动机(Motivation)

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

    类图

    结构很简单,使用起来有可能很复杂。

    代码示例

    一般的常规操作有可能是这样的(伪代码):

    class ISubject{
    public:
    virtual void process();
    };


    class RealSubject: public ISubject{
    public:
    virtual void process(){
    //....
    }
    };


    class ClientApp{
    ISubject* subject;

    public:

    ClientApp(){
    subject=new RealSubject(); // 实际有可能拿不到这个东西
    }

    void DoTask(){
    //...
    subject->process();
    //....
    }
    };

    实际有可能拿不到 RealSubject 这个对象。

    代理模式(伪代码):

    class ISubject{
    public:
    virtual void process();
    };


    //Proxy的设计
    class SubjectProxy: public ISubject{
    public:
    virtual void process(){
    //对RealSubject的一种间接访问
    //.... 这里实现有可能很复杂
    }
    };

    class ClientApp{
    ISubject* subject;
    public:
    ClientApp(){
    subject=new SubjectProxy(); // 有可能用工厂什么的包装起来
    }

    void DoTask(){
    //...
    subject->process();

    //....
    }
    };

    要点总结

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


    以分布式的例子来解释这个模式,会大量的使用。不是太明白怎么使用。
    设计模式看到这,个人的感觉:1) 实体类用来做数据的通信 2)接口用来做行为的通信。



    参考:GeekBand



      你可能想看:

      扫描二维码推送至手机访问。

      版权声明:本文由皇冠云发布,如需转载请注明出处。

      本文链接:https://www.idchg.com/info/24577.html

      分享给朋友:

      “代理模式 Proxy” 的相关文章

      中国电信CN2目录价格解析:每个Gbps带宽多少钱?

      随着企业数字化转型的加速,稳定的网络连接变得至关重要。特别是在跨境业务中,高质量的网络服务是保障业务顺畅运行的关键。中国电信的CN2电路作为行业内的佼佼者,凭借其稳定的性能和专业的服务,赢得了众多企业的信赖。对于那些计划部署CN2电路的企业来说,最关心的问题莫过于价格。本文将深入探讨中国电信CN2目...

      选择最适合的泰国VPS解决方案,助力业务成功

      我一直对网络基础设施充满好奇,尤其是虚拟专用服务器(VPS)这一概念。VPS为用户提供了一种灵活且高效的网站托管解决方案,让我觉得非常迷人。而泰国VPS更是因其独特的地理位置和网络质量,成为了许多选择者的心仪之地。 什么是VPS呢?简单地说,VPS是一种通过虚拟化技术将物理服务器划分为多个独立的虚拟...

      Debian 修改DNS 设置的详细指南及常见问题解决方法

      了解DNS及其重要性 在日常使用网络的过程中,我们常会遇到“DNS”这个术语。简单来说,DNS(Domain Name System)是互联网的“电话簿”。它将我们输入的域名转换为计算机理解的IP地址,确保我们能够顺利访问网站。如果没有DNS,我们将不得不记住每一个网站的IP地址,那可真是太麻烦了!...

      选择合适的SSH连接工具以提升远程管理效率和安全性

      在当今的网络环境中,SSH连接工具扮演着重要角色。简单来说,SSH连接工具是一种应用程序,用于通过SSH协议安全地连接和管理远程服务器。想想看,当我们需要与服务器进行交互、执行命令或者上传文件时,这些工具就变得尤为重要。 我记得第一次使用SSH连接工具的时候,是为了管理一台远程服务器。能够通过简单的...

      使用Namesilo优惠码注册域名,轻松省钱的秘诀

      Namesilo概述:域名注册的专业选择 要谈到域名注册,我想到的首先就是Namesilo。作为一家成立于2010年的域名注册商,Namesilo吸引了不少用户。我对它的第一印象是专业,尤其是在价格和服务上,使其成为许多人的首选。它的总部位于美国亚利桑那州,作为ICANN认证的注册商,Namesil...

      韩国电信行业的发展与未来展望

      韩国电信概述 在谈到韩国电信的时候,我常常会被这个国家在技术和通信领域的发展速度所吸引。从上世纪六十年代开始,韩国的电信行业就开始了它的发展历程。早期,政府主导了整个电信市场的建设,提供了基础设施。然而,随着经济的快速增长和技术的不断进步,私营企业逐渐崭露头角,形成了今天竞争激烈的电信市场。 历史上...