<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    美麗涵涵童裝店--說我博客名字,給你們打折!
    隨筆 - 82  文章 - 266  trackbacks - 0
    <2007年9月>
    2627282930311
    2345678
    9101112131415
    16171819202122
    23242526272829
    30123456


    點擊這里給楊愛友發消息
    美麗涵涵童裝店
    說我博客名字,給你們打折!

    常用鏈接

    留言簿(6)

    隨筆分類

    隨筆檔案

    文章檔案

    好友的BLOG

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    代理模式:為其他對象提供一種代理以控制對這個對象的訪問。這種功能只有在編譯無法確定要實現哪個接口時才有必要使用。利用代理可以創建一個實現了一組接口的新類。代理類與被代理類必須實現同一個接口,代理對象是在運行時由調用處理器定義的新類,它有一個名字,如$Proxy0。代理對象一旦被創建,與虛擬機上的任何其他類沒有什么區別。

    給大家舉個比較簡單的例子:
    假如你買臺IBM的筆記本,IBM產家是不提供鼠標的.但是我們如果從代理商的手里買就有鼠標和送.
    很簡單的例子,寫幾個類來實現一下吧.
    1. 首先設計一個購買的接口代碼如下:(ComputerInterface.java)
    1 public interface ComputerInterface {
    2      public void buy();
    3 }
    4 

    2. 建一個電腦類實現購買的接口代碼如下:(Computer.java)  
     1 public class Computer implements ComputerInterface{
     2     private String pcName="IBMT60";
     3     private int pcPrice=17800;
     4     public String getPcName() {
     5         return pcName;
     6     }
     7     public void setPcName(String pcName) {
     8         this.pcName = pcName;
     9     }
    10     public int getPcPrice() {
    11         return pcPrice;
    12     }
    13     public void setPcPrice(int pcPrice) {
    14         this.pcPrice = pcPrice;
    15     }
    16     public void buy() {
    17     System.out.print("獲得筆記本電腦:"+pcName+"一臺");
    18     }
    19 }

    3. 再建設一個代理商的類:用來完成買電腦和贈送鼠標:(ComputerProxy.java)
     1 public class ComputerProxy {
     2     private ComputerInterface pci;
     3     public ComputerInterface getPci() {
     4         return pci;
     5     }
     6     public void setPci(ComputerInterface pci) {
     7         this.pci = pci;
     8     }
     9     public void buy(){
    10         pci.buy();
    11         System.out.println("贈送鼠標一個");
    12     }
    13 }

    4. 建一個主函數測試一下:(TestDemo.java)
    1 public class TestDemo {
    2     public static void main(String[] args) {
    3         ComputerProxy c1=new ComputerProxy();
    4         c1.setPci(new Computer());
    5         c1.buy();
    6     }
    7 }

    運行結果如下:
    獲得筆記本電腦:IBMT60一臺獲得鼠標一個
    以上就是代理功能的實現,由代理商銷售筆記本,并贈送鼠標.但是這樣的程序只適合是銷售IBM筆記本.那么如果要是其它品牌呢.所以我們來更改一個代理類.來實現動態的代理.

    5. 建立一個類代碼如下:(ComputerDynamicProxy.java)
     1 public class ComputerDynamicProxy implements InvocationHandler {
     2     /*
     3      * 調用處理器是實現了InvocationHandler接口的類對象,在這個接口中只有一個方法:
     4      * Object invoke(Object proxy,Method method,Object[] args);
     5      * 無論何時調用代理對象的方法,調用處理器的invoke()方法都會被調用,并向其傳遞Method對象和原始的參數。
     6      */ 
     7     private Object delegate;
     8     
     9     // 描述是誰的代理,也就是與那個類有關系
    10     public Object bind(Object delegate) {
    11         this.delegate = delegate;
    12         return Proxy.newProxyInstance(delegate.getClass().getClassLoader(),
    13                 delegate.getClass().getInterfaces(), this);
    14     }
    15 
    16     public Object invoke(Object proxy, Method method, Object[] args)
    17             throws Throwable {
    18         System.out.println("贈送鼠標一個!");
    19         Object result = method.invoke(delegate, args);
    20         return result;
    21     }
    22 }

    主函數修改如下:
          
    1 public class TestDemo {
    2     public static void main(String[] args) {
    3         ComputerDynamicProxy proxy = new ComputerDynamicProxy();
    4         ComputerInterface computer = (ComputerInterface) proxy.bind(new Computer());
    5         //返回一個代理類的實例,并非返回一個ComputerInterface對象,事實上他也不能被實例化不能有對象,返回的對象名可能為$computer
    6         computer.buy();
    7     }
    8 }
    9 

    就可以實現動態代理了.
    posted on 2007-09-04 01:15 楊愛友 閱讀(784) 評論(0)  編輯  收藏 所屬分類: java相關技術
    美麗涵涵童裝店
    親,說我博客名字,給你們打折!
    主站蜘蛛池模板: a级毛片在线免费| 国产一区二区三区免费看| 亚洲女初尝黑人巨高清| 在线亚洲午夜片AV大片| 免费看一区二区三区四区 | 国产男女猛烈无遮挡免费视频网站| 久久久久久亚洲精品| 国产亚洲精品仙踪林在线播放| 1区2区3区产品乱码免费| 亚洲日本va中文字幕久久| MM1313亚洲国产精品| 57PAO成人国产永久免费视频| 亚洲va无码专区国产乱码| 欧洲精品码一区二区三区免费看| 日韩av无码成人无码免费| 337p日本欧洲亚洲大胆艺术| 男女一边摸一边做爽的免费视频| 国产在线不卡免费播放| 亚洲国产区男人本色在线观看| 99热在线精品免费播放6| 国产a v无码专区亚洲av| 亚洲成a人无码亚洲成www牛牛| 国产国产人免费视频成69堂| 亚洲av日韩av天堂影片精品| 国产免费牲交视频免费播放| 亚洲精品黄色视频在线观看免费资源| 亚洲av成人中文无码专区| 成人免费毛片视频| 亚洲av永久无码精品天堂久久| 99精品在线免费观看| 亚洲AV无码一区二区二三区入口| a级毛片免费网站| 亚洲成年看片在线观看| 美女视频黄a视频全免费网站色 | 亚洲无限乱码一二三四区| 久久99国产乱子伦精品免费| 亚洲成a人片在线观看日本| 在线看片免费人成视频福利| 亚洲人成图片小说网站| 9i9精品国产免费久久| 精品亚洲成α人无码成α在线观看 |