1. 程式人生 > >Java動態代理的作用及好處

Java動態代理的作用及好處

Java動態代理的優勢是實現無侵入式的程式碼擴充套件,也就是方法的增強;讓你可以在不用修改原始碼的情況下,增強一些方法;在方法的前後你可以做你任何想做的事情(甚至不去執行這個方法就可以)。

1.動態代理是設計模式中的代理模式:

定義:為其它物件提供一種代理以控制對這個物件的訪問控制;在某些情況下,客戶不想或者不能直接引用另一個物件,這時候代理物件可以在客戶端和目標物件之間起到中介的作用。

2.靜態代理
  • 靜態代理類:由程式設計師建立或者由第三方工具生成,再進行編譯;在程式執行之前,代理類的.class檔案已經存在了。
  • 靜態代理類通常只代理一個類。
  • 靜態代理事先知道要代理的是什麼。
3.動態代理
  • 動態代理類:在程式執行時,通過反射機制動態生成。
  • 動態代理類通常代理介面下的所有類。
  • 動態代理事先不知道要代理的是什麼,只有在執行的時候才能確定。
  • 動態代理的呼叫處理程式必須事先InvocationHandler介面,及使用Proxy類中的newProxyInstance方法動態的建立代理類。
  • Java動態代理只能代理介面,要代理類需要使用第三方的CLIGB等類庫。