• <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-06-04來源:作者:點擊數: 標簽:設計javaJAVAJava代理
    關鍵字: Java 代理模式 在 軟件工程 中,代理模式(Proxy Pattern)在很多情況下都非常有用。例如在Java XML保重, 開發 人員可以利用代理來訪問Web服務。例1中演示了經典的Hello World Web服務的例子: 例1 一個 SOA P代理的例子 public class HelloClient
    關鍵字: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

    老湿亚洲永久精品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>