程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> Java程序開發中代理技術的使用方法

Java程序開發中代理技術的使用方法

編輯:JAVA編程入門知識

  假如你這樣的需求:在運行時創建實現一組給定接口的類,注重這個類是在運行時創建的,你就需要使用Java中的代理類來達成你的要求。

  代理類提供在運行時創建類的能力,這個新建的類能實現你指定的接口。 當然你不能在運行時為要實現的接口中的方法定義新代碼,而是提供一個調用處理器來實現。調用處理器是實現了InvocationHandler接口的類的對象,此接口只有一個方法:

   以下是引用片段:
  Object invoke(Object proxy,Method mtd,Object[] args)

  其中proxy是代理對象;mtd是描述方法的類的對象,此對象執行它的invoke(Object obj,Object[] args)方法可以調用封裝在Mthod對象中的方法;args是存儲了此方法參數的數組。

  建立代理對象:使用Proxy類的newProxyInstance方法,其格式如下:

  

  以下是引用片段:

  Object proxy=Proxy.newProxyInstance(null,interfaces,handler);

  其中第一個參數是一個類加載器,這裡使用默認加載器,用null表示;第二個參數是一個Class的數組,其每個元素是一個接口,這就是用來指定要實現的一組接口,哪怕只有一個接口也要通過數組來傳遞;第三個參數就是調用處理器。

  在代理對象上調用方法時,調用處理器的invoke方法會被自動調用,正在調用的方法和參數自動傳遞給inboke方法的jmtdt args形式參數中,同時也會用args參數數組中的參數去調用mtd對象中指定的方法。

  代理的應用:方法調用跟蹤(把要跟蹤的對象包裝成代理類對象);為遠程調用方法提供路由;用戶接口事件與動作關聯(C#中有類似的功能)。


 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved