<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ù)
    美麗涵涵童裝店
    親,說我博客名字,給你們打折!
    主站蜘蛛池模板: 91香蕉视频免费| 久久免费精彩视频| 国产公开免费人成视频| 亚洲日韩一区精品射精| 午夜成年女人毛片免费观看| 亚洲人成网网址在线看| 青娱乐免费视频在线观看| 亚洲狠狠狠一区二区三区| 2020久久精品国产免费| 亚洲香蕉在线观看| 免费黄网在线观看| 另类图片亚洲校园小说区| 久久久久国产亚洲AV麻豆 | 亚洲AV无码乱码在线观看富二代| 中国一级特黄的片子免费| 国产亚洲精久久久久久无码| 精品一区二区三区免费| 亚洲视频在线观看不卡| 日韩一区二区a片免费观看| 亚洲精品成a人在线观看夫| 国产精品嫩草影院免费| 一级毛片免费毛片毛片| 亚洲AV永久青草无码精品| 免费人成在线观看69式小视频| 亚洲性无码一区二区三区| 免费人妻无码不卡中文字幕18禁 | 成人自慰女黄网站免费大全| 亚洲电影中文字幕| 免费观看的毛片大全| 国产亚洲福利精品一区二区| 中文字幕在线亚洲精品| 免费在线视频你懂的| 粉色视频成年免费人15次| 亚洲精品无码成人AAA片| 我的小后妈韩剧在线看免费高清版| 亚洲av永久无码精品秋霞电影秋 | 亚洲乱码无码永久不卡在线| 99久久免费观看| 国产AV日韩A∨亚洲AV电影| 久久久久久亚洲AV无码专区| 午夜两性色视频免费网站|