動態代理

代理模式的理解

一種應用很廣的結構設計模式,映射現實生活中也有很多場景,比如火車票代售點,明星經紀人的很多業務。。。
直接調用:用什麼方法,直接找對應的對象去調用
【買票直接去官方提供的地點,要拍戲直接找某個明星。。。】
代理模式調用:用什麼方法,不能直接找具體的對象,需要找到代理對象,代理對象存在具體對象的引用,實際這個方法執行還是調用的具體對象
【買火車票:假如火車站不給個人提供買票,我們必須通過去代理點買票,代理點最後實際是去火車站給我們買票;找明星拍戲,不能直接找這個明星,我們找到經紀人,實際拍戲還是明星拍戲】

代理種類

根據字節碼文件生成的時機,分爲靜態代理 和 動態代理
靜態代理:我們手動編寫了代理類,程序運行前,已經存在這個代理對象的字節碼文件
動態代理:程序運行前,不存在代理類,是根據我們需求動態生成的代理類

jdk動態代理:首先動態生成Java文件,然後編譯爲字節碼文件,最後加載到內存
CGLib動態代理:是直接生成字節碼文件,然後加載到內存

靜態代理缺點

1、 當需要代理多個類的時候,由於代理對象要實現與目標對象一致的接口,有兩種方式:
只維護一個代理類,由這個代理類實現多個接口,但是這樣就導致代理類過於龐大
新建多個代理類,每個目標對象對應一個代理類,但是這樣會產生過多的代理類
2、當接口需要增加、刪除、修改方法的時候,目標對象與代理類都要同時修改,不易維護。

參考博文:https://www.cnblogs.com/whirly/p/10154887.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章