Java簡單實現(xiàn)動態(tài)代理模式過程解析
更新時間:2020年07月17日 08:50:18 作者:杯莫停、
這篇文章主要介紹了Java動態(tài)代理模式簡單案例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
基本知識: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表示當前對象,它`必須實現(xiàn)InvocationHandler接口的invoke方法,它就是代理邏輯方法.
public Object getInstance() {
Object o = Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
return o;
}
//proxy:代理對象,就是getInstance方法生成的對象
//method,當前調(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)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Java四舍五入時保留指定小數(shù)位數(shù)的五種方式
這篇文章主要介紹了Java四舍五入時保留指定小數(shù)位數(shù)的五種方式,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2020-09-09
阿里巴巴 Sentinel + InfluxDB + Chronograf 實現(xiàn)監(jiān)控大屏
這篇文章主要介紹了阿里巴巴 Sentinel + InfluxDB + Chronograf 實現(xiàn)監(jiān)控大屏,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09
Java與Node.js利用AES加密解密出相同結(jié)果的方法示例
這篇文章主要介紹了Java與Node.js利用AES加密解密出相同結(jié)果的方法,文中給出了詳細的示例代碼,相信對大家的學習或者工作能帶來一定的幫助,需要的朋友們下面來一起看看吧。2017-02-02

