<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


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

    常用鏈接

    留言簿(6)

    隨筆分類

    隨筆檔案

    文章檔案

    好友的BLOG

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

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

    給大家舉個(gè)比較簡(jiǎn)單的例子:
    假如你買臺(tái)IBM的筆記本,IBM產(chǎn)家是不提供鼠標(biāo)的.但是我們?nèi)绻麖拇砩痰氖掷镔I就有鼠標(biāo)和送.
    很簡(jiǎn)單的例子,寫幾個(gè)類來實(shí)現(xiàn)一下吧.
    1. 首先設(shè)計(jì)一個(gè)購買的接口代碼如下:(ComputerInterface.java)
    1 public interface ComputerInterface {
    2      public void buy();
    3 }
    4 

    2. 建一個(gè)電腦類實(shí)現(xiàn)購買的接口代碼如下:(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+"一臺(tái)");
    18     }
    19 }

    3. 再建設(shè)一個(gè)代理商的類:用來完成買電腦和贈(zèng)送鼠標(biāo):(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("贈(zèng)送鼠標(biāo)一個(gè)");
    12     }
    13 }

    4. 建一個(gè)主函數(shù)測(cè)試一下:(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 }

    運(yùn)行結(jié)果如下:
    獲得筆記本電腦:IBMT60一臺(tái)獲得鼠標(biāo)一個(gè)
    以上就是代理功能的實(shí)現(xiàn),由代理商銷售筆記本,并贈(zèng)送鼠標(biāo).但是這樣的程序只適合是銷售IBM筆記本.那么如果要是其它品牌呢.所以我們來更改一個(gè)代理類.來實(shí)現(xiàn)動(dòng)態(tài)的代理.

    5. 建立一個(gè)類代碼如下:(ComputerDynamicProxy.java)
     1 public class ComputerDynamicProxy implements InvocationHandler {
     2     /*
     3      * 調(diào)用處理器是實(shí)現(xiàn)了InvocationHandler接口的類對(duì)象,在這個(gè)接口中只有一個(gè)方法:
     4      * Object invoke(Object proxy,Method method,Object[] args);
     5      * 無論何時(shí)調(diào)用代理對(duì)象的方法,調(diào)用處理器的invoke()方法都會(huì)被調(diào)用,并向其傳遞Method對(duì)象和原始的參數(shù)。
     6      */ 
     7     private Object delegate;
     8     
     9     // 描述是誰的代理,也就是與那個(gè)類有關(guān)系
    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("贈(zèng)送鼠標(biāo)一個(gè)!");
    19         Object result = method.invoke(delegate, args);
    20         return result;
    21     }
    22 }

    主函數(shù)修改如下:
          
    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         //返回一個(gè)代理類的實(shí)例,并非返回一個(gè)ComputerInterface對(duì)象,事實(shí)上他也不能被實(shí)例化不能有對(duì)象,返回的對(duì)象名可能為$computer
    6         computer.buy();
    7     }
    8 }
    9 

    就可以實(shí)現(xiàn)動(dòng)態(tài)代理了.
    posted on 2007-09-04 01:15 楊愛友 閱讀(784) 評(píng)論(0)  編輯  收藏 所屬分類: java相關(guān)技術(shù)
    美麗涵涵童裝店
    親,說我博客名字,給你們打折!
    主站蜘蛛池模板: 麻豆国产入口在线观看免费| 久久久久亚洲精品无码网址 | 99re在线这里只有精品免费| 亚洲美女aⅴ久久久91| 日韩电影免费在线| 国产精品福利在线观看免费不卡| 久久久久亚洲av无码专区导航 | 成视频年人黄网站免费视频| 猫咪免费人成网站在线观看入口 | 久久精品无码免费不卡| 精品亚洲成AV人在线观看| 日本高清免费网站| 免费视频成人片在线观看| 色偷偷噜噜噜亚洲男人| 亚洲国产成人久久精品影视| 国产又大又黑又粗免费视频| 99久久免费精品高清特色大片| 国产精品久久久久久亚洲小说| 亚洲精品第一国产综合精品| 免费va人成视频网站全| 国产四虎免费精品视频| 女同免费毛片在线播放| 男女猛烈xx00免费视频试看| 亚洲婷婷在线视频| 亚洲va久久久噜噜噜久久狠狠 | 日本免费v片一二三区| 最近中文字幕2019高清免费| xxxxxx日本处大片免费看| 亚洲熟妇AV一区二区三区浪潮| 久久精品国产99精品国产亚洲性色| 国产又黄又爽又刺激的免费网址| 国内精品乱码卡1卡2卡3免费| 最近更新免费中文字幕大全| 污视频网站免费在线观看| 亚洲最大的成人网站| 91精品国产亚洲爽啪在线影院| 久久精品国产精品亚洲下载| 精品国产免费观看久久久| 成人福利免费视频| 最近免费中文字幕mv电影| 未满十八18禁止免费无码网站 |