代理模式(JDK、CGLIB)
生活随笔
收集整理的這篇文章主要介紹了
代理模式(JDK、CGLIB)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前述
代理模式(Proxy)是一個重要的設計模式,提供了對目標對象另外的訪問方式(即通過代理來訪問對象)。
舉例:我們可以理解為代理權,如各大藥材公司生產的藥品,一般不會是公司自己零散售出,在個體病人與生產商之間會有一個代理商,代理商負責與公司溝通批量購入,然后再零散出售給病人,因而病人想要訪問生產商需先與代理商溝通。也可以考慮(NBA球星——經紀人——球隊)三者的關系;
優勢:
(1)可以在目標對象實現的基礎上,增加額外的功能操作(擴展目標對象的功能);
(2)職責更加清楚,更加智能化;
代理模式的關鍵在于:代理對象和目標對象;
一般分為動態代理和靜態代理。
靜態代理
條件:代理對象需是實現與目標對象一樣的的接口
優點:可以做到在不修改目標對象功能的前提下,對目標對象的功能進行擴展;
缺點:
(1)代理對象與目標對象接口一致,導致所實行的類過于繁多。
(2)一旦接口增加方法,目標對象和代理對象都需要實現與維護。
動態代理
(1)代理對象不需要實現接口
(2)包含JDK代理、CGLIB代理
- JDK代理
JDK中生成代理的API:
proxy:被代理的類的實例
method:調用被代理的類的方法
args:該方法需要的參數
- CGLIB代理
Cglib是一個字節碼增強庫,該代理對象的實現是在字節碼的層面上。
實現步驟:
(1)實現MethodInterceptor接口,重寫intercept方法(攔截器)
(2)寫一個目標類的代理實現方法getInstance,設置Enhance工具類,設置父類回調函數,創建子類操作;
注意:
(1)目標對象的類不能為final
(2)目標方法如果為static、final,那么將不會執行攔截操作;
總結
以上是生活随笔為你收集整理的代理模式(JDK、CGLIB)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《微机原理与接口技术》知识点总结
- 下一篇: VB一款笔记本电脑电池显示状态信息工具