28.代理模式(proxy pattern)
阿新 • • 發佈:2018-11-15
1.結構
2.代理的種類(根據用途分類)
3.代理的優缺點
4.代理模式的實現
靜態代理(針對每個真實主題需要人為建立一個代理類)
jdk動態代理(實質是生成一個實現我們傳入的介面,並且繼承Proxy的類,優點:針對某種功能的代理只需要實現一個InvocationHandler,然後在程式碼中動態的通過Proxy.newProxyInstance建立任何物件的代理物件,缺點:真實物件必須實現某個介面,並且只能代理介面中的方法)
--原理可見 https://www.cnblogs.com/MOBIN/p/5597215.html
--示例,ArrayList物件的代理物件的類結構為
public final class $Proxy0 extends Proxy
implements List, RandomAccess, Cloneable, Serializable
cglib動態代理(實質是繼承我們傳入的類,優點:針對某種功能的代理只需要實現一個MethodInterceptor,然後在程式碼中動態的通過Enhancer建立任何物件的代理物件,被代理的物件可以不需要實現介面,缺點:不能代理final類合final方法)
--原理可見
https://www.jianshu.com/p/9a61af393e41?from=timeline&isappinstalled=0
https://www.cnblogs.com/chinajava/p/5880887.html
--示例,
public class RealSubject$$EnhancerByCGLIB$$19e22f17 extends RealSubject
implements Factory