• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

Java设计模式之代理模式篇(1)

发布: 2008-6-04 14:38 | 作者: 不详 | 来源: code365 | 查看: 92次 | 进入软件测试论坛讨论

领测软件测试网 关键字:Java 代理模式

 在软件工程中,代理模式(Proxy Pattern)在很多情况下都非常有用。例如在Java XML保重,开发人员可以利用代理来访问Web服务。例1中演示了经典的Hello       World Web服务的例子:
  例1 一个SOAP代理的例子
  public class HelloClient {
    public static void main(String[] args) {
      try {
           HelloIF_Stub proxy = (HelloIF_Stub)(new HelloWorldImpl().getHelloIF());
           proxy._setTargetEndpoint(args[0]);
           System.out.println(proxy.sayHello("Hello World!"));
           } catch (Exception ex) {
             ex.printStackTrace();
           }
           }
           }


    在例一中,客户端首先获得对代理的引用,然后利用命令行参数设定代理的端点(即Web服务的URL地址),接下来调用代理的sayHello()方法,代理再将方法调用传递给相应的Web服务。

    代理模式和修饰模式(Decorator Pattern)有一定的相似之处。两个模式又使用了代理将方法调用传递给另一个对象,该对象被称为真实对象(Real Subject)。代理模式和修饰模式的不同之处在于:在代理模式中,代理和真实对象之间的关系在程序被编译的时候就确定下来了,而修饰模式则是在运行时递归地创建。

    本文首先提供一个ImageIcon的例子来说明代理模式,然后会探讨一下JDK是如何支持代理模式的。

    代理模式

    代理模式通过使用代理来替代实际的对象,使程序能够控制对该对象的访问。下面是一个ImageIcon的例子。

    例2 ImageIcon的例子
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class IconTest extends JFrame {
      private static String IMAGE_NAME = "hands.jpg";
      private static int FRAME_X = 150, FRAME_Y = 200,
      FRAME_WIDTH = 430, FRAME_HEIGHT = 392;
      private Icon imageIcon = null, imageIconProxy = null;
      static public void main(String args[]) {
      IconTest app = new IconTest();
      app.show();
   }
    public IconTest() {
      super("ImageIcon测试");
      imageIcon = new ImageIcon(IMAGE_NAME);
      setBounds(FRAME_X, FRAME_Y, FRAME_WIDTH, FRAME_HEIGHT);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   }
    public void paint(Graphics g) {
      super.paint(g);
      Insets insets = getInsets();
      imageIcon.paintIcon(this, g, insets.left, insets.top);
   }

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: java JAVA Java 代理 模式 设计


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网