日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

【设计模式】代理模式 ( 动态代理 | 模拟 Java 虚拟机生成对应的 代理对象 类 )

發布時間:2025/6/17 java 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【设计模式】代理模式 ( 动态代理 | 模拟 Java 虚拟机生成对应的 代理对象 类 ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 一、模擬 JVM 生成對應的 代理對象
  • 二、模擬 JVM 生成對應的 代理對象 完整流程展示
    • 1、目標對象接口
    • 2、被代理對象
    • 3、調用處理程序
    • 4、模擬 JVM 生成的代理對象類
    • 5、客戶端

前言

動態代理使用流程 :

  • ① 創建目標對象 : 創建 目標對象 接口 ;

  • ② 創建被代理對象 : 創建 被代理對象 , 實現 目標對象 接口 ;

  • ③ 創建調用處理程序 : 創建 InvocationHandler 子類對象 , 內部持有 被代理對象 , 在 invoke 方法中 , 返回 method.invoke(subject, args) ;

  • ④ 動態創建代理對象 : 調用 Proxy.newProxyInstance 創建 代理對象 實例對象 , 由 JVM 自動創建代理對象類 , 然后再創建對應的實例對象 ;

  • ⑤ 動態代理調用 : 調用 代理對象 實例的相關 目標對象 接口 方法 ;


本篇博客 基于 【設計模式】代理模式 ( 動態代理使用流程 | 創建目標對象 | 創建被代理對象 | 創建調用處理程序 | 動態創建代理對象 | 動態代理調用 ) 三、動態代理使用流程 中的示例 , 模擬寫出一個由 Java 虛擬機自動生成的字節碼類 ;





一、模擬 JVM 生成對應的 代理對象



下面的類基本 JVM 動態生成的類功能一致 ;

在該動態生成的類中 , 持有 被代理對象 和 調用處理程序 ;

在每個 目標對象 接口方法中 , 使用反射獲取對應的方法 , 將

  • 反射獲取的 Method 對象實例 ,
  • 持有的 被代理對象實例 ,
  • 方法參數 ,

全部傳入 調用處理程序 InvocationHandler 的 invoke 方法中 ;

這也是所有的 目標對象 方法 , 都能在 InvocationHandler 的 invoke 方法中回調到的原因 ;


生成的代碼示例 :

import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method;/*** 代理對象* 模擬由 JVM 自動生成的動態代理類*/ public class DynamicProxy implements Subject {/*** 代理對象中持有被代理對象的引用* 構造方法注入*/private Subject subject;/*** 持有調用處理程序* 構造方法注入*/private InvocationHandler invocationHandler;public DynamicProxy(Subject subject, InvocationHandler invocationHandler) {this.subject = subject;this.invocationHandler = invocationHandler;}@Overridepublic void request() {try {Method method = subject.getClass().getMethod("request", null);invocationHandler.invoke(subject, method, null);} catch (NoSuchMethodException e) {e.printStackTrace();} catch (Throwable throwable) {throwable.printStackTrace();}} }



二、模擬 JVM 生成對應的 代理對象 完整流程展示




1、目標對象接口


/*** 目標接口* 代理對象 和 被代理對象 都要實現該接口*/ public interface Subject {void request(); }

2、被代理對象


/*** 被代理對象*/ public class RealSubject implements Subject {@Overridepublic void request() {System.out.println("被代理對象 RealSubject request()");} }

3、調用處理程序


import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method;public class DynamicInvocationHandler implements InvocationHandler {/*** 持有的 被代理對象*/private Subject subject;public DynamicInvocationHandler(Subject subject) {this.subject = subject;}@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {// 調用真實的 被代理對象 的方法// 被代理對象的所有的方法的調用都會傳到該方法中進行處理Object object = method.invoke(subject, args);return object;} }

4、模擬 JVM 生成的代理對象類


import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method;/*** 代理對象* 模擬由 JVM 自動生成的動態代理類*/ public class DynamicProxy implements Subject {/*** 代理對象中持有被代理對象的引用* 構造方法注入*/private Subject subject;/*** 持有調用處理程序* 構造方法注入*/private InvocationHandler invocationHandler;public DynamicProxy(Subject subject, InvocationHandler invocationHandler) {this.subject = subject;this.invocationHandler = invocationHandler;}@Overridepublic void request() {try {Method method = subject.getClass().getMethod("request", null);invocationHandler.invoke(subject, method, null);} catch (NoSuchMethodException e) {e.printStackTrace();} catch (Throwable throwable) {throwable.printStackTrace();}} }

5、客戶端


import java.lang.reflect.Proxy;public class Client {public static void main(String[] args) {// 被代理對象Subject realSubject = new RealSubject();// 創建調用處理程序 , 內部持有被代理對象DynamicInvocationHandler dynamicInvocationHandler =new DynamicInvocationHandler(realSubject);// 創建動態代理類DynamicProxy proxy = new DynamicProxy(realSubject, dynamicInvocationHandler);// 動態代理調用proxy.request();} }

執行結果 :

該展示相當于一個靜態代理展示 ;

總結

以上是生活随笔為你收集整理的【设计模式】代理模式 ( 动态代理 | 模拟 Java 虚拟机生成对应的 代理对象 类 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 不用播放器看av | 深夜福利院 | 国产高潮失禁喷水爽到抽搐 | 特大巨交吊性xxxx | 校园春色中文字幕 | 韩国一二三区 | 久久精品国产成人av | 久久精品电影网 | 天堂av资源在线观看 | 综合国产一区 | 日韩av成人 | 国产视频不卡一区 | 青青免费在线视频 | 日韩欧美视频在线播放 | 国产一区二区av在线 | 三级网站在线 | 成人瑟瑟 | 视频二区中文字幕 | 韩日一级片 | 女人张开腿让男人桶爽 | 欧美黄色影院 | 中文在线一区二区三区 | 亚洲综合狠狠 | 幸福,触手可及 | www男人天堂 | 东京热一区二区三区四区 | 91超碰在 | 自拍啪啪 | 亚洲成人一区二区三区 | 丰满人妻熟妇乱偷人无码 | 国产高清黄色 | 伊人一区| 丁香婷婷网 | 在线伊人网 | 免费黄色片子 | 裸体美女免费视频网站 | 亚洲va欧美va国产综合久久 | 国产无遮挡a片又黄又爽 | 欧美hdse | 邵氏电影《金莲外传2》免费观看 | 日本国产中文字幕 | 爱爱色图 | 二区三区 | 欧美大片网站 | 成年人在线观看av | 精品久久久久久久久久久久久久久久 | 亚洲精品久久久久久久久久久久久 | 亚洲系列中文字幕 | 欧美日韩国产成人在线 | 性大毛片视频 | 五月天精品视频 | 久久久久久久久精 | 亚洲国产成人在线观看 | 亚洲春色av| 亚洲av无码乱码国产精品 | 美女搞黄在线观看 | 黄色三级av| 日韩综合在线 | 久久亚洲精少妇毛片午夜无码 | 少妇被黑人到高潮喷出白浆 | 国产区一区二区 | 黄色激情四射 | 天天操天天干天天操 | 最新久久| 插插插网站 | 日韩城人视频 | 欧美黄色一区 | 日本xxxwww| 青青草福利视频 | 国内av| 午夜寻花 | 国产区一区二 | 亚洲一个色| 夜夜嗨影院 | 爱爱精品 | 久久精品片 | 91最新在线 | 美女午夜影院 | 久久麻豆av | 欧美aaaaa | 极品丰满少妇 | 99热热99| 四虎永久在线精品免费一区二区 | 色婷婷国产精品久久包臀 | 午夜男人网 | 自拍欧美日韩 | 日韩av网站在线 | 亚洲最大网 | 亚洲在线免费看 | 日韩精品理论 | 欧美性受xxxxxx黑人xyx性爽 | 污免费视频 | 成人午夜激情网 | 韩国av电影在线观看 | 后进极品白嫩翘臀在线视频 | 欧美又粗又大aaa片 老熟妇仑乱视频一区二区 亚洲妇女体内精汇编 | 色婷婷久久一区二区三区麻豆 | 成人玩具h视频 | 国产一级二级三级视频 |