国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Dynamic Proxy Pattern Self-Conclusion

kid143 / 1215人閱讀

Reflection and dynamic compiling are used to achieve dynamic proxy pattern. Based on learning today, long story in short, there are four steps to implement it.

Get the instance which is the dynamic proxy object.

Implement InvocationHandler interface, and customize the invoke method in it.

public interface InvocationHandler {
    Object invoke(Object proxy, Method method, Object[] args) throws Throwable;
}

InvocationHandler interface is very simple, Reflection can be used inside invoke() method and a callback would be made to this function.

Use Proxy.newInstance() method to generate the dynamic proxy.

ProxyObject obj = (ProxyObject) Proxy.newProxyInstance(MyInterface.class.getClassLoader(),
                        new Class[] { MyInterface.class }, handler);

Where the parameters, first the ClassLoader that is to "load" the dynamic proxy class, second an array of interfaces to implement, and last An InvocationHandler to forward all methods calls on the proxy to.

Call the inner method in the proxy.

An example are the following:

Class SimpleProxy implements invocationHandler {
    private Object target;
    
    public Object newInstance(Object target) {
        this.target = target;
        return Proxy.newProxyInstance(target.getClass().getLoader(),
            target.getClass().getInterfaces(), this);
    }
    
    @Override 
    public Object invoke(Object proxy, Method method, Object[] args) {
        System.out.print("This is the proxy");
        // ...
        Object res = method.invoke(target, args)
        return res;
    }
}

And a brief utilization would be the following:

public static void main(String[] args) {
    SimpleProxy simpleProxy = new SimpleProxy();
    // ProxyObjectimpl is the implemented class of interface ProxyObject
    ProxyObject target = new ProxyObjectimpl();
    ProxyObject proxy = (ProxyObject) simpleProxy.newInstance(target);
    // call is a method in ProxyObject
    proxy.call();
}

Here are some good reference to talk in detail about Proxy Pattern, a good description of how Proxy.newInstance() works to achieve proxy function, and a self-implemented java.land.reflect.Proxy.

But this implementation only works with interface, since interface checking is implemented in Proxy.newProxyInstance(). If want to do a dynamic proxy in class, CGLIB is the tool to make the proxy for non-final class.

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/66297.html

相關文章

  • Java 動態代理(Dynamic proxy) 小結

    摘要:代理模式基本概念不論是靜態代理還是動態代理其本質都是代理模式的一種實現那么什么是代理模式呢代理模式即給某一個對象提供一個代理并由代理對象控制對原對象的引用代理模式其實取材于實際生活例如我們生活中常見的房屋租賃代理我們在租房時一般不是直接和房 代理模式 基本概念 不論是靜態代理還是動態代理, 其本質都是代理模式的一種實現, 那么什么是代理模式呢?代理模式, 即給某一個對象提供一個代理, ...

    Jason 評論0 收藏0
  • 深入理解代理模式

    摘要:代理模式代理類中創建一個真實對象的實例模式的核心裝飾者強調的是增強自身,在被裝飾之后你能夠在被增強的類上使用增強后的功能。 代理模式 在詳細了解代理模式之前,可能對于像小秋一樣的小白,只知道一些很淺顯的概念,或者就知道遠程代理啊,靜態代理啊,動態代理啊,這些看似可以望文生義的專業名詞,但是如果我告訴你代理模式貫穿了我們生活的方方面面,就比如你現在刷著公眾號的時候,實際上就用了遠程代理模...

    testHs 評論0 收藏0
  • dubbo源碼解析(二十三)遠程調用——Proxy

    摘要:第二種是,是一款字節碼引擎工具,能夠在運行時編譯生成。后記該部分相關的源碼解析地址該文章講解了遠程調用中關于代理的部分,關鍵部分在于基于實現的字節碼技術來支撐動態代理。 遠程調用——Proxy 目標:介紹遠程調用代理的設計和實現,介紹dubbo-rpc-api中的各種proxy包的源碼。 前言 首先聲明叫做代理,代理在很多領域都存在,最形象的就是現在朋友圈的微商代理,廠家委托代理幫他們...

    Cristic 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<