亚洲免费乱码视频,日韩 欧美 国产 动漫 一区,97在线观看免费视频播国产,中文字幕亚洲图片

      1. <legend id="ppnor"></legend>

      2. 
        
        <sup id="ppnor"><input id="ppnor"></input></sup>
        <s id="ppnor"></s>

        Java設計模式之代理模式篇

        字號:

        在軟件工程中,代理模式(Proxy Pattern)在很多情況下都非常有用。例如在Java XML保重,開發(fā)人員可以利用代理來訪問Web服務。例1中演示了經(jīng)典的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();
             }
             }
             }
             在例一中,客戶端首先獲得對代理的引用,然后利用命令行參數(shù)設定代理的端點(即Web服務的URL地址),接下來調(diào)用代理的sayHello()方法,代理再將方法調(diào)用傳遞給相應的Web服務。
             代理模式和修飾模式(Decorator Pattern)有一定的相似之處。兩個模式又使用了代理將方法調(diào)用傳遞給另一個對象,該對象被稱為真實對象(Real Subject)。代理模式和修飾模式的不同之處在于:在代理模式中,代理和真實對象之間的關系在程序被編譯的時候就確定下來了,而修飾模式則是在運行時遞歸地創(chuàng)建。
             本文首先提供一個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);
             }