動態代理

 
代理方式 實現 優勢 缺點 特色
JDK靜態代理 代理類與委託類實現同一接口,而且在代理類中須要硬編碼接口 實現簡單,容易理解 代理類須要硬編碼接口,在實際應用中可能會致使重複編碼,浪費存儲空間而且效率很低 好像沒啥特色
JDK動態代理 代理類與委託類實現同一接口,主要是經過代理類實現InvocationHandler並重寫invoke方法來進行動態代理的,在invoke方法中將對方法進行加強處理 不須要硬編碼接口,代碼複用率高 只可以代理實現了接口的委託類 底層使用反射機制進行方法的調用
CGLIB動態代理 代理類將委託類做爲本身的父類併爲其中的非final委託方法建立兩個方法,一個是與委託方法簽名相同的方法,它在方法中會經過super調用委託方法;另外一個是代理類獨有的方法。在代理方法中,它會判斷是否存在實現了MethodInterceptor接口的對象,若存在則將調用intercept方法對委託方法進行代理 能夠在運行時對類或者是接口進行加強操做,且委託類無需實現接口 不能對final類以及final方法進行代理 底層將方法所有存入一個數組中,經過數組索引直接進行方法調用



轉自:https://www.jianshu.com/p/9a61af393e41數組

相關文章
相關標籤/搜索