Android設(shè)計(jì)模式-17-代理模式

1. 定義

也稱委托模式,間接訪問(wèn)目標(biāo)對(duì)象, 分為靜態(tài)代理和動(dòng)態(tài)代理

給目標(biāo)對(duì)象提供一個(gè)代理對(duì)象,并由代理對(duì)象控制對(duì)目標(biāo)對(duì)象的引用

2. 使用場(chǎng)景

無(wú)法訪問(wèn)或者不想直接訪問(wèn)目標(biāo)對(duì)象時(shí)

按職責(zé)來(lái)劃分,通常有以下使用場(chǎng)景:

1. 遠(yuǎn)程代理:為一個(gè)對(duì)象在不同的地址空間提供局部代表隱藏一個(gè)對(duì)象存在于不同地址空間的事實(shí);遠(yuǎn)程機(jī)器可能具有更好的計(jì)算性能與處理速度,可以快速響應(yīng)并處理客戶端請(qǐng)求;

2. 虛擬代理:通過(guò)使用一個(gè)小的對(duì)象代理一個(gè)大對(duì)象

目的:減少系統(tǒng)的開(kāi)銷;

3. 保護(hù)代理:控制目標(biāo)對(duì)象的訪問(wèn),給不同用戶提供不同的訪問(wèn)權(quán)限

目的:用來(lái)控制對(duì)真實(shí)對(duì)象的訪問(wèn)權(quán)限;

4. 智能引用代理,當(dāng)需要控制對(duì)原始對(duì)象的訪問(wèn)時(shí),額外操作包括耗時(shí)操作、計(jì)算訪問(wèn)次數(shù)等等;

目的:在不影響對(duì)象類的情況下,在訪問(wèn)對(duì)象時(shí)進(jìn)行更多的操作;

5. 防火墻代理:保護(hù)目標(biāo)不讓惡意用戶靠近;

6. Cache代理:為結(jié)果提供臨時(shí)的存儲(chǔ)空間,以便其他客戶端調(diào)用;

3. 優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

1. 協(xié)調(diào)調(diào)用者和被調(diào)用者,降低了系統(tǒng)的耦合度

2. 代理對(duì)象作為客戶端和目標(biāo)對(duì)象之間的中介,起到了保護(hù)目標(biāo)對(duì)象的作用

缺點(diǎn)

1. 由于在客戶端和真實(shí)主題之間增加了代理對(duì)象,因此會(huì)造成請(qǐng)求的處理速度變慢;

2. 實(shí)現(xiàn)代理模式需要額外的工作(有些代理模式的實(shí)現(xiàn)非常復(fù)雜),從而增加了系統(tǒng)實(shí)現(xiàn)的復(fù)雜度

4. Android源碼中的使用

代理模式在Android源碼中還是用很多應(yīng)用的,例如用ActivityManagerProxy代理ActivityManagerServixe,且二者處于各自的獨(dú)立進(jìn)程中,屬于遠(yuǎn)程代理

5. 實(shí)例演示

以公司拖欠工資,員工進(jìn)行訴訟(打官司)為例,正常來(lái)說(shuō)是需要找律師作為代理的

1. 創(chuàng)建一個(gè)訴訟流程的接口

2. 創(chuàng)建被代理者,即員工

3. 創(chuàng)建代理類,即律師

4. 創(chuàng)建實(shí)例進(jìn)行訴訟流程

上面就是一個(gè)簡(jiǎn)單的代理模式了,另外還有一種實(shí)現(xiàn)方式,就是使用動(dòng)態(tài)代理:

4.1 創(chuàng)建動(dòng)態(tài)代理類

4.2 創(chuàng)建實(shí)例進(jìn)行訴訟流程

?我是今陽(yáng),如果想要進(jìn)階和了解更多的干貨,歡迎關(guān)注公眾號(hào)”今陽(yáng)說(shuō)“接收我的最新文章

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容