1. 程式人生 > >28.代理模式(proxy pattern)

28.代理模式(proxy pattern)

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