1. 程式人生 > 其它 >java基礎-動態代理

java基礎-動態代理

代理分2種,靜態代理和動態代理

靜態代理:

代理模式中的所有角色(代理物件、目標物件、目標物件的介面)等都是在編譯期就確定好的。 代理好處:   靜態代理的用途 控制真實物件的訪問許可權 通過代理物件控制對真實物件的使用許可權。   避免建立大物件 通過使用一個代理小物件來代表一個真實的大物件,可以減少系統資源的消耗,對系統進行優化並提高執行速度。   增強真實物件的功能 這個比較簡單,通過代理可以在呼叫真實物件的方法的前後增加額外功能 動態代理:      動態代理中的代理類並不要求在編譯期就確定,而是可以在執行期動態生成,從而實現對目標物件的代理功能。     反射是動態代理的一種實現方式。   有2種動態代理的實現方式:
     1、JDK 動態代理:   java.lang.reflect 包中的 Proxy 類和 InvocationHandler 介面提供了生成動態代理類的能力。   2、Cglib 動態代理:Cglib (Code Generation Library )是一個第三方程式碼生成類庫,執行時在記憶體中動態生成一個子類物件從而實現對目標物件功能的擴充套件。   區別:     JDK 動態代理和 Cglib 動態代理的區別 JDK 的動態代理有一個限制,就是使用動態代理的物件必須實現一個或多個介面。如果想代理沒有實現介面的類,就可以使用 CGLIB實現。