小編這次要給大家分享的是Java如何實現動態代理模式,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。
基本知識:JDK動態代理是java.lang.reflect.*包提供的方式,它必須借助一個接口才能生成代理對象.
步驟:
1、首先建一個接口類,并提供一個實現類:
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、創建一個代理類,必須要實現InvocationHandler類
public class JdkProxy implements InvocationHandler { public Object target; public JdkProxy(Object target) { this.target = target; } //第一個是類加載器,采用了target本身的類加載器 //第二個是把生成的動態代理對象下掛在哪些接口下面,該寫法就是將生成的代理對象放在target真實對象所實現的所有接口下.Subject對象的接口顯然是ISubject,代理對象可以這樣聲明:ISubject proxy =xxxx; //第三個是定義實現方法邏輯的代理類,this表示當前對象,它`必須實現InvocationHandler接口的invoke方法,它就是代理邏輯方法. public Object getInstance() { Object o = Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this); return o; } //proxy:代理對象,就是getInstance方法生成的對象 //method,當前調度的方法 //args:調度方法的參數 @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println(method.getName() + "方法執行前"); Object object = method.invoke(target, args); System.out.println(object); System.out.println(method.getName() + "方法執行后"); 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); } }
結果:
add方法執行前
5
add方法執行后
看完這篇關于Java如何實現動態代理模式的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。