1. 程式人生 > >GOF23設計模式之動態代理模式之理解

GOF23設計模式之動態代理模式之理解


動態代理(dynamic Proxy
動態代理(動態生成代理類)
  • JDK自帶的動態代理
  • Javaassist位元組碼操作庫實現
  • CGLIB
  • ASM(底層使用指令,可維護性較差)
相當於靜態代理的優點:
抽象角色中(介面)宣告的所有方法都被轉移到呼叫處理器一個集中的方法中處理,這樣
我們可以更加靈活和統一的處理眾多的方法。
JDK自帶的動態代理:
Java.lang.reflect.Proxy
作用:動態生成代理類和物件
Java.Lang.reflect.InvocationHandler(處理器介面)
每次通過invoke方法實現對真實角色的代理訪問
每次通過Proxy
生成代理類物件時都要指定對應的處理器物件
一般的動態代理程式碼如下:
Star realStar = new RealStar();
StarHandler handler = new
StarHandler(realStar);
Star proxy =
(Star)Proxy.newProxyInstance(ClassLoader.getSystemClassLoader(), new Class[]{Star.class},
handler);
proxy.sing();