Java 代理模式

https://blog.csdn.net/scplove/article/details/52451899
java reflect proxy


java.jpg

Java動態(tài)代理的類和接口

    <artifactId>eureka</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
  • java.lang.reflect.Proxy:動態(tài)代理機制的主類,提供一組靜態(tài)方法為一組接口動態(tài)的生成對象和代理類。
public static InvocationHandler getInvocationHandler(Object proxy) 
public static Class<?> getProxyClass(ClassLoader loader, Class<?>... interfaces) 
public static boolean isProxyClass(Class<?> cl) 
public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces,InvocationHandler h)
  • java.lang.reflect.InvocationHandler:調用處理器接口,自定義invokle方法,用于實現(xiàn)對于真正委托類的代理訪問。
public Object invoke(Object proxy, Method method, Object[] args)throws Throwable
  • java.lang.ClassLoader:類裝載器類,將類的字節(jié)碼裝載到 Java 虛擬機(JVM)中并為其定義類對象,然后該類才能被使用。Proxy類與普通類的唯一區(qū)別就是其字節(jié)碼是由 JVM 在運行時動態(tài)生成的而非預存在于任何一個 .class 文件中。
    每次生成動態(tài)代理類對象時都需要指定一個類裝載器對象:newProxyInstance()方法第一個參數(shù)。

動態(tài)代理機制

  1. 通過實現(xiàn)InvocationHandler接口創(chuàng)建自己的調用處理器。
  2. 通過為Proxy類指定ClassLoader對象和一組interface來創(chuàng)建動態(tài)代理類。
  3. 通過反射機制獲得動態(tài)代理類的構造函數(shù),其唯一參數(shù)類型是調用處理器接口類型。
  4. 通過構造函數(shù)創(chuàng)建動態(tài)代理類實例,構造時調用處理器對象作為參數(shù)被傳入。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 事例 小張是一個普普通通的碼農(nóng),每天勤勤懇懇地碼代碼。某天中午小張剛要去吃飯,一個電話打到了他的手機上?!笆荴X公...
    余平的余_余平的平閱讀 516評論 0 0
  • 代理模式 代理模式就是給某個對象提供一個代理對象,并由代理對象控制對于原對象的訪問,即客戶不直接操控原對象,而是通...
    雨中獨奏閱讀 315評論 1 1
  • 版權聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉載 前言 Java 代理模式在 Android 中有很多的應用。比...
    cc榮宣閱讀 950評論 0 7
  • 我對你滿心歡喜,你卻總是顧左右而言他,滿心歡喜總會落空,等待終有盡頭,你永遠讀不懂我眉眼間的愁緒,也無法理解我沒來...
    叫橘子的貓閱讀 270評論 0 0
  • 小眼睛大頭獅子,捂臉
    五彩小獅子閱讀 282評論 1 1

友情鏈接更多精彩內容