注冊成功
X
W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
問題: 解釋一下代理模式(Proxy)
- 代理模式:
代理模式就是本該我做的事,我不做,我交給代理人去完成。就比如,我生產了一些產品,我自己不賣,我委托代理商幫我賣,讓代理商和顧客打交道,我自己負責主要產品的生產就可以了。
代理模式的使用,需要有本類,和代理類,本類和代理類共同實現(xiàn)統(tǒng)一的接口。然后在main中調用就可以了。本類中的業(yè)務邏輯一般是不會變動的,在我們需要的時候可以不斷的添加代理對象,或者修改代理類來實現(xiàn)業(yè)務的變更。
- 代理模式可以分為:
靜態(tài)代理
優(yōu)點:可以做到在不修改目標對象功能的前提下,對目標功能擴展
缺點:因為本來和代理類要實現(xiàn)統(tǒng)一的接口,所以會產生很多的代理類,類太多,一旦接口增加方法,目標對象和代理對象都要維護。
動態(tài)代理(JDK代理/接口代理)
代理對象,不需要實現(xiàn)接口,代理對象的生成,是利用JDK的API,動態(tài)的在內存中構建代理對象,需要我們指定代理對象/目標對象實現(xiàn)的接口的類型。
Cglib代理
特點: 在內存中構建一個子類對象,從而實現(xiàn)對目標對象功能的擴展。
- 使用場景:
修改代碼的時候。不用隨便去修改別人已經寫好的代碼,如果需要修改的話,可以通過代理的方式來擴展該方法。
隱藏某個類的時候,可以為其提供代理類
當我們要擴展某個類功能的時候,可以使用代理類
當一個類需要對不同的調用者提供不同的調用權限的時候,可以使用代理類來實現(xiàn)。
減少本類代碼量的時候。
需要提升處理速度的時候。就比如我們在訪問某個大型系統(tǒng)的時候,一次生成實例會耗費大量的時間,我們可以采用代理模式,當用來需要的時候才生成實例,這樣就能提高訪問的速度。
以上內容是否對您有幫助:
更多建議: