1.什么是代理模式?
詳細(xì)的解釋?zhuān)簽槠渌麑?duì)象提供代理以控制對(duì)這個(gè)對(duì)象的訪(fǎng)問(wèn),代理對(duì)象起到了中介作用,不涉及功能服務(wù),亦可增加額外的服務(wù);
代理模式的分類(lèi):
遠(yuǎn)程代理:為不同的地理對(duì)象提供局域網(wǎng)代表對(duì)象。典型的設(shè)計(jì)有:C/S架構(gòu)屬于遠(yuǎn)程代理的縮影
虛擬代理:根據(jù)需要將資源消耗很大的對(duì)象進(jìn)行延遲,真正需要的時(shí)候再創(chuàng)建。典型設(shè)計(jì):經(jīng)常我們看到很多APP在加載圖片的時(shí)候,會(huì)先加載一個(gè)默認(rèn)的圖片,等真正的圖片加載完了之后再顯示出來(lái),這樣非常的友好。
智能引用代理:提供對(duì)目標(biāo)對(duì)象的額外的服務(wù)。典型設(shè)計(jì):現(xiàn)實(shí)場(chǎng)景中隨處可見(jiàn),我們的火車(chē)、汽車(chē)票代售處、代購(gòu)等等都是屬于代理模式的范疇。
保護(hù)代理:控制用戶(hù)的訪(fǎng)問(wèn)權(quán)限。典型設(shè)計(jì):就像我們的公眾號(hào)的文章留言功能,只有你這個(gè)用戶(hù)關(guān)注了該公眾號(hào)之后才能留言,否則你就只能瀏覽不能留言。
代理模式的實(shí)現(xiàn):
代理的實(shí)現(xiàn)方式主要有兩種:靜態(tài)代理 動(dòng)態(tài)代理
靜態(tài)代理:代理和被代理對(duì)象在代理之前都是被確定的,他們都實(shí)現(xiàn)相同的接口或者是繼承相同的抽象類(lèi)
動(dòng)態(tài)代理:
動(dòng)態(tài)創(chuàng)建代理類(lèi)(虛擬機(jī)->框架、系統(tǒng)幫助我們來(lái)完成創(chuàng)建過(guò)程)
1.代理對(duì)象不需要實(shí)現(xiàn)接口。
2.不需要自己實(shí)現(xiàn)代理對(duì)象,由虛擬機(jī)動(dòng)態(tài)生成(內(nèi)部通過(guò)java反射實(shí)現(xiàn))。
3.動(dòng)態(tài)代理也叫做JDK代理或接口代理。
深入理解代理模式請(qǐng)參考:https://segmentfault.com/a/1190000019433930?utm_source=tag-newest