最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java簡單實現(xiàn)動態(tài)代理模式過程解析

 更新時間:2020年07月17日 08:50:18   作者:杯莫停、  
這篇文章主要介紹了Java動態(tài)代理模式簡單案例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

基本知識:JDK動態(tài)代理是java.lang.reflect.*包提供的方式,它必須借助一個接口才能生成代理對象.

步驟:

1、首先建一個接口類,并提供一個實現(xiàn)類:

public interface ISubject {

  public int add(int a, int b);
}
public class Subject implements ISubject {
  @Override
  public int add(int a, int b) {
    return a + b;
  }
}

2、創(chuàng)建一個代理類,必須要實現(xiàn)InvocationHandler類

public class JdkProxy implements InvocationHandler {

  public Object target;

  public JdkProxy(Object target) {
    this.target = target;
  }

  //第一個是類加載器,采用了target本身的類加載器
  //第二個是把生成的動態(tài)代理對象下掛在哪些接口下面,該寫法就是將生成的代理對象放在target真實對象所實現(xiàn)的所有接口下.Subject對象的接口顯然是ISubject,代理對象可以這樣聲明:ISubject proxy =xxxx;
  //第三個是定義實現(xiàn)方法邏輯的代理類,this表示當(dāng)前對象,它`必須實現(xiàn)InvocationHandler接口的invoke方法,它就是代理邏輯方法.
  public Object getInstance() {
    Object o = Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
    return o;
  }


  //proxy:代理對象,就是getInstance方法生成的對象
  //method,當(dāng)前調(diào)度的方法
  //args:調(diào)度方法的參數(shù)
  @Override
  public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
    System.out.println(method.getName() + "方法執(zhí)行前");
    Object object = method.invoke(target, args);
    System.out.println(object);
    System.out.println(method.getName() + "方法執(zhí)行后");
    return object;
  }
}

3、測試類

public class ProxyTest {

  public static void main(String[] args) {
    Subject subject = new Subject();
    JdkProxy jdk = new JdkProxy(subject);
    ISubject proxy = (ISubject) jdk.getInstance();
    proxy.add(2, 3);
  }
}

結(jié)果:

add方法執(zhí)行前
5
add方法執(zhí)行后

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 如何避免在Java?中使用雙括號初始化

    如何避免在Java?中使用雙括號初始化

    這篇文章主要介紹了如何避免在Java中使用雙括號初始化,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • Java四舍五入時保留指定小數(shù)位數(shù)的五種方式

    Java四舍五入時保留指定小數(shù)位數(shù)的五種方式

    這篇文章主要介紹了Java四舍五入時保留指定小數(shù)位數(shù)的五種方式,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-09-09
  • 阿里巴巴 Sentinel + InfluxDB + Chronograf 實現(xiàn)監(jiān)控大屏

    阿里巴巴 Sentinel + InfluxDB + Chronograf 實現(xiàn)監(jiān)控大屏

    這篇文章主要介紹了阿里巴巴 Sentinel + InfluxDB + Chronograf 實現(xiàn)監(jiān)控大屏,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • 基于JAVA的短信驗證碼api調(diào)用代碼實例

    基于JAVA的短信驗證碼api調(diào)用代碼實例

    這篇文章主要為大家詳細(xì)介紹了基于JAVA的短信驗證碼api調(diào)用代碼實例,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Java與Node.js利用AES加密解密出相同結(jié)果的方法示例

    Java與Node.js利用AES加密解密出相同結(jié)果的方法示例

    這篇文章主要介紹了Java與Node.js利用AES加密解密出相同結(jié)果的方法,文中給出了詳細(xì)的示例代碼,相信對大家的學(xué)習(xí)或者工作能帶來一定的幫助,需要的朋友們下面來一起看看吧。
    2017-02-02
  • Java中獲取?List中最后一個元素3種方法以及實際應(yīng)用

    Java中獲取?List中最后一個元素3種方法以及實際應(yīng)用

    這篇文章主要給大家介紹了關(guān)于Java中獲取?List中最后一個元素3種方法以及實際應(yīng)用的相關(guān)資料,由于List的索引是從0開始的,所以最后一個元素的索引是List的大小減1,需要的朋友可以參考下
    2023-11-11
  • 簡單了解java中int和Integer的區(qū)別

    簡單了解java中int和Integer的區(qū)別

    這篇文章主要介紹了簡單了解java中int和Integer的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • Java多線程 中斷機制及實例詳解

    Java多線程 中斷機制及實例詳解

    這篇文章主要介紹了Java多線程 中斷機制及實例詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • Java中常見的4種限流算法詳解

    Java中常見的4種限流算法詳解

    這篇文章主要介紹了Java中常見的4種限流算法詳解,FixedWindowRateLimiter 類表示一個固定窗口限流器,使用 limit 和 interval 參數(shù)分別表示限制請求數(shù)量和時間間隔,缺點是短時間內(nèi)可能會流量翻倍,需要的朋友可以參考下
    2023-12-12
  • java題解LeetCode20.有效的括號

    java題解LeetCode20.有效的括號

    這篇文章主要為大家介紹了java題解LeetCode20.有效的括號示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10

最新評論

施秉县| 台江县| 临清市| 乌审旗| 八宿县| 章丘市| 阿拉尔市| 城固县| 合肥市| 商南县| 桐乡市| 元江| 澎湖县| 桐梓县| 扬中市| 米林县| 敖汉旗| 全南县| 宜川县| 福海县| 白城市| 浦城县| 大英县| 墨江| 开原市| 马鞍山市| 安陆市| 视频| 五原县| 新建县| 衡山县| 恩施市| 马尔康县| 河间市| 张家口市| 南皮县| 井陉县| 宁晋县| 托克逊县| 丰原市| 东宁县|