16. 解釋一下代理模式(Proxy)

2018-11-13 22:16 更新

問題: 解釋一下代理模式(Proxy)

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號