2. 動態代理回顧: 動態代理是AOP的基礎

接口和實現類:

public interface Interface {
    void doSomething();
    void somethingElse(String arg);
}
public class RealObject implements Interface {
    public void doSomething() {
        System.out.println("doSomething.");
    }
    public void somethingElse(String arg) {
        System.out.println("somethingElse " + arg);
    }
}

動態代理對象處理器:

public class DynamicProxyHandler implements InvocationHandler {
    private Object proxyed;
    
    public DynamicProxyHandler(Object proxyed) {
        this.proxyed = proxyed;
    }
    
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException {
        System.out.println("代理工作了.");
        return method.invoke(proxyed, args);
    }
}

測試類:

public class Main {
    public static void main(String[] args) {
        RealObject real = new RealObject();
        Interface proxy = (Interface) Proxy.newProxyInstance(
                Interface.class.getClassLoader(), new Class[] {Interface.class},
                new DynamicProxyHandler(real));
        
        proxy.doSomething();
        proxy.somethingElse("zhw");
    }
}

結果:

代理工作了.
doSomething.
代理工作了.
somethingElse zhw
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 遲到的祝福 563128547 2009-5-10 21:42 昨天就想好了要在今天早上給老母親節日的問...
    半島紅狐閱讀 454評論 0 0
  • 早在2017年的11月的一天,在一個社群里看到云老師發布的關于思維導圖這種工具的學習推廣,怦然心動,果斷報名!至于...
    靜姐姐的分享空間閱讀 636評論 0 1
  • “DON'T WORRY, BE HAPPY”,是日劇《悠長假期》里的出鏡率相當高的一句臺詞。 《悠長假期》是講述...
    知魚君閱讀 1,163評論 0 0
  • swift中也會使用到懶加載
    sttech閱讀 159評論 0 0