1. 定義
代理模式就是給對(duì)象提供一個(gè)代理惠拭,用來(lái)控制對(duì)對(duì)象的訪問。這時(shí),訪問對(duì)象不適合或者不能直接引用目標(biāo)對(duì)象沃疮,代理對(duì)象作為訪問對(duì)象和目標(biāo)對(duì)象之間的中介。
2. 類圖
3. 對(duì)象展示
4. 場(chǎng)景及過程
為真實(shí)資源添加代理資源并將數(shù)據(jù)存入緩存.
real_source = Source('picture.jpg')
proxy = SourceProxy(real_source)
client = Client(proxy)
client.show() // 真實(shí)資源的第一次調(diào)用
client.show() // 通過代理存入緩存的調(diào)用
5. 與裝飾器模式區(qū)別
- 裝飾器模式強(qiáng)調(diào)的是增強(qiáng)自身梅肤,在被裝飾之后你能夠在被增強(qiáng)的類上使用增強(qiáng)后的功能司蔬。增強(qiáng)后還是自己,只不過能力更強(qiáng)了而已姨蝴;代理模式強(qiáng)調(diào)要讓別人幫你去做一些本身與你業(yè)務(wù)沒有太多關(guān)系的職責(zé)(記錄日志俊啼、設(shè)置緩存)。代理模式是為了實(shí)現(xiàn)對(duì)象的控制左医,因?yàn)楸淮淼膶?duì)象往往難以直接獲得或者是其內(nèi)部不想暴露出來(lái)授帕。
- 裝飾模式是以對(duì)客戶端透明的方式擴(kuò)展對(duì)象的功能,是繼承方案的一個(gè)替代方案炒辉;代理模式則是給一個(gè)對(duì)象提供一個(gè)代理對(duì)象豪墅,并由代理對(duì)象來(lái)控制對(duì)原有對(duì)象的引用;
- 裝飾模式是為裝飾的對(duì)象增強(qiáng)功能黔寇;而代理模式對(duì)代理的對(duì)象施加控制偶器,但不對(duì)對(duì)象本身的功能進(jìn)行增強(qiáng);
6. 應(yīng)用場(chǎng)景分析
nginx代理,緩存數(shù)據(jù),日志記錄,隱藏真實(shí)對(duì)象等
把微服務(wù)當(dāng)做一個(gè)整體,cbs就相當(dāng)于代理了很多微服務(wù)
7. 優(yōu)缺點(diǎn)
優(yōu)點(diǎn):
被代理的對(duì)象只需要實(shí)現(xiàn)與自己相關(guān)的業(yè)務(wù)
擴(kuò)展性高
保護(hù)被代理對(duì)象的訪問權(quán)限
缺點(diǎn):
被代理對(duì)象增加業(yè)務(wù)邏輯也需要在代理類中增加邏輯
需要先設(shè)計(jì)出真實(shí)的對(duì)象才能對(duì)該對(duì)象進(jìn)行代理