天天看點

jdk動态代理實作原理

寫在前面:

大神和diao炸天的親請繞道..

關于代理模式的概念這裡省去,大家可以放鳥盡情搜..

關于為什麼叫動态代理,個人了解是代理的類是在運作時動态生成的,大家也可以參考網上的了解..

文筆很差,是以文字較少,都在代碼和注釋中..

=======一點不華麗的分割線-------------------------

開門見山,lets go..

java中可以通過jdk提供的 Proxy.newProxyInstance靜态方法來建立動态代理對象,下面先來看看這個方法的實作

下面通過個例子來說明下:

先來定義一個接口,jdk的動态代理基于接口來建立代理類,不能基于類的原因是java不支援多重繼承,而代理類都會繼承Proxy類(個人了解).

再來一個具體的實作,在代理模式中可以叫它的執行個體可以叫target,這個是真正執行操作的對象

好,接下來我們來寫個動态代理工廠,根據 不同的target來建立動态代理對象

可以看到這是一個簡單的實作,隻是在真實對象執行前後各打一句資訊..

接下來用一個 main函數來把這些結合起來 

ok,小手抖一下,走你,看下執行結果

可以看到在調用代理對象的方法時,添加的額外動作已經生效,接下來我們看下生成的代理類的代碼..

-------------END

by Kevin Fan