代理的實現(xiàn)分為:
靜態(tài)代理:代理類是在編譯時就實現(xiàn)好的。也就是說 Java 編譯完成后代理類是一個實際的 class 文件。
動態(tài)代理:代理類是在運行時生成的责蝠。也就是說 Java 編譯完之后并沒有實際的 class 文件,而是在運行時動態(tài)生成的類字節(jié)碼,并加載到JVM中克握。
靜態(tài)代理
Paste_Image.png
動態(tài)代理
Paste_Image.png
靜態(tài)代理的demo
Paste_Image.png
動態(tài)代理的demo
Paste_Image.png
Paste_Image.png
Paste_Image.png
Paste_Image.png
代理涉及的概念
InvocationHandler接口
代理類調(diào)用任何方法都會經(jīng)過這個調(diào)用處理器類的invoke方法。
Proxy
主要用于產(chǎn)生代理類枷踏,通過 Proxy 類生成的代理類都繼承了 Proxy 類菩暗。newProxyInstance方法封裝了獲取代理對象。
newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h);方法傳如的參數(shù)可以看出旭蠕,代理一個對象停团,必須要要滿足這個對象實現(xiàn)一個接口。