java实现的代理的两种办法
生活随笔
收集整理的這篇文章主要介紹了
java实现的代理的两种办法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
代理的名詞
代理對象 增強后的對象
目標對象 被增強的對象
他們不是絕對的,會根據情況發生變化
?
靜態代理
繼承
代理對象繼承目標對象,重寫需要增強的方法;
缺點:會代理類過多,非常復雜
聚合
目標對象和代理對象實現同一個接口,代理對象當中要包含目標對象。
缺點:也會產生類爆炸,只不過比繼承少一點點
總結:如果在不確定的情況下,盡量不要去使用靜態代理。因為一旦你寫代碼,就會產生類,一旦產生類就爆炸。
動態代理
自己模擬的動態代理
不需要手動創建類文件(因為一旦手動創建類文件,就會產生類爆炸),通過接口反射生成一個類文件,然后調用第三方的編譯技術,動態編譯這個產生的類文件成class文件,繼而利用UrlclassLoader(因為這個動態產生的class不在工程當中所以需要使用UrlclassLoader)把這個動態編譯的類加載到jvm當中,最后通過反射把這個類實例化。
缺點:首先要生成文件
缺點:動態編譯文件 class
缺點:需要一個URLclassloader
軟件性能的最終體現在IO操作
JDK動態代理
通過接口反射得到字節碼,然后把字節碼轉成class native openJDK c++
?
總結
以上是生活随笔為你收集整理的java实现的代理的两种办法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是代理
- 下一篇: vim比vi做的一些改进