软件测试 | 设计模式——代理设计
  p1prOQge3cDY 2023年11月02日 16 0

代理设计也就是Java开发中使用较多的一种设计模式,所谓的代理设计就是指由一个代理主题来操作真实主题,真实主题执行具体的业务操作,而代理主题负责其他相关业务的处理,就好像在生活中经常使用的代理上网一样,客户通过网络代理连接网络,由代理服务器完成用户权限和访问限制等与上网操作相关的操作,如图所示。

不管是代理操作还是真实的操作,其共同的目的就是上网,所以用户关心的只是如何上网,至于具体是如何操作的用户并不关心,所以可以得出如图6-18所示的分析结果。

软件测试 | 设计模式——代理设计_Network

图6-18可以发现,只需要定义一个上网的接口,代理主题和真实主题都同时实现此接口,然后再由代理操作真实主题即可,以上的要求可以形成如下代码。

范例:代理操作

interface  Network{                                             //定义Network接口
        public  void browse() ;                                  //定义浏览的抽象方法
   }
     class Real implements Network{                                 //真实的上网操作
         public  void  browse(){                                  //覆写抽象方法
              System.out.printIn("上网浏览信息")  ;
      }
    }
      class Proxy implements Network {                               //代理上网
           private Network network  ;                  
           public Proxy(Network network){                          //设置代理的真实操作
           this.network = network ;                                  //设置代理的子类
  }
     public  void  check(){                                        //与具体上网相关的操作
          System.out.printIn("检查用户是否合法");
      }
      public void browse(){
           this.check();                                              //可以同时调用多个与具体业务相关的操作
           this.network.browse();                                     //调用真实上网操作
    }
  }
   public class ProxyDemo {
       public  static void main(string args []){
          Network net = null ;                 //定义接口对象
          net = new Proxy(new Real());     //实例化代理,同时传入代理的真实操作
          net.browse()  ;                      //客户只关心上网浏览一个功能
     }
  }

程序运行结果:

检查用户是否合法

上网浏览信息

以上程序的执行流程如图所示

软件测试 | 设计模式——代理设计_Real_02

真实主题完成的只是上网的最基本功能,而代理主题要做比真实主题更多的业务相关的操作。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

p1prOQge3cDY
最新推荐 更多