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)代理機(jī)制的主類,提供一組靜態(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:調(diào)用處理器接口,自定義invokle方法,用于實(shí)現(xiàn)對于真正委托類的代理訪問。
public Object invoke(Object proxy, Method method, Object[] args)throws Throwable
  • java.lang.ClassLoader:類裝載器類,將類的字節(jié)碼裝載到 Java 虛擬機(jī)(JVM)中并為其定義類對象,然后該類才能被使用。Proxy類與普通類的唯一區(qū)別就是其字節(jié)碼是由 JVM 在運(yùn)行時動態(tài)生成的而非預(yù)存在于任何一個 .class 文件中。
    每次生成動態(tài)代理類對象時都需要指定一個類裝載器對象:newProxyInstance()方法第一個參數(shù)。

動態(tài)代理機(jī)制

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

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容