1. 程式人生 > 其它 >FastAdmin表格中新增操作按鈕

FastAdmin表格中新增操作按鈕

代理模式是一種常用的設計模式,它分為靜態代理&動態程式碼

何為代理模式,他究竟解決什麼型別的問題

代理模式顧名思義就是代理一個類完成或擴充他的功能(即實現被代理類的方法),簡而言之,就是在不通過修改原始碼的情況下,新增新的功能,或者對原來的功能就行擴充套件。

如何區分靜態代理和動態代理

根據代理的建立時機

靜態:由程式設計師建立代理類或特定工具自動生成原始碼再對其編譯。在程式執行前代理類的.class檔案就已經存在了。

動態:在程式執行時運用反射機制動態建立而成。

靜態代理例子

通常靜態代理模式都是基於基於實現同一介面實現的

person介面

person介面的實現類huangs(被代理的類)

代理類personproxy

最後我們呼叫代理類的action方法

結果

靜態代理通過將被代理類和代理類實現同一介面,並且通過構造器傳值的方式,傳入被代理類的物件,最後在代理類的方法中即可實現對代理類方法的呼叫或增強。

靜態代理類在執行前已經由java編譯器編譯成class檔案,即在執行前就建立好了代理類物件。

動態代理例子

動態代理有兩種實現方法,一種是對實現了某一介面的類進行代理,二是對未實現某一介面的類進行。

這兩種動態代理使用的技術也不同,前者是使用JDK內建的api進行實現,後者是使用cglib代理進行實現。

JDK代理

jdk代理就是利用jdk提供的介面,動態的生成代理類,其實本質上是利用反射機制獲取到目標類物件,以及他的介面和方法,最後通過proxy代理物件建立

測試

另一種cglib藉助ASM載入位元組碼過於複雜,略