• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    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);
       }

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: java JAVA Java 代理 模式 設計


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>