一、題外話
本節(jié)講一講代理模式,個人感覺代理模式非常簡單,使用起來幾乎沒有太大的困難,因此簡單講述即可。
二、定義
代理模式:為其他對象提供一種代理以控制對這個對象的訪問。
解釋:舉例來說,你想在美國買iphone6,但是你沒有到美國去,恰巧你有一朋友到美國出差,于是你讓朋友幫忙代買iphone6.整個過程就是代理模式,你是目標(biāo)對象,你朋友作為代理,代你完成你想進(jìn)行的操作。
三、UML類圖、基本代碼
基本代碼:
class PRogram { static void Main(string[] args) { Proxy proxy = new Proxy(); proxy.Request(); Console.Read(); } } abstract class Subject { public abstract void Request(); } class RealSubject : Subject { public override void Request() { Console.WriteLine("real request"); } } class Proxy : Subject { RealSubject realSubject; public override void Request() { if (realSubject == null) { realSubject = new RealSubject(); } realSubject.Request(); } }
四、優(yōu)缺點(diǎn)及適用場合:
優(yōu)點(diǎn):
1)代理模式能將代理對象與真正被調(diào)用的對象分離,在一定程度上降低了系統(tǒng)的耦合度。
2)代理模式在客戶端和目標(biāo)對象之間起到一個中介作用,這樣可以起到保護(hù)目標(biāo)對象的作用。代理對象也可以對目標(biāo)對象調(diào)用之前進(jìn)行其他操作。
缺點(diǎn):
1)在客戶端和目標(biāo)對象增加一個代理對象,會造成請求處理速度變慢。
2)增加了系統(tǒng)的復(fù)雜度。
使用場景:
1)遠(yuǎn)程代理,也就是為一個對象在不同的地址空間提供局部代表。這樣可以隱藏一個對象存在于不同地址空間的事實(shí)。
2)虛擬代理,根據(jù)需要創(chuàng)建開銷很大的對象。通過它來存放實(shí)例化需要很長時間的對象。
3)安全代理,用來控制真實(shí)對象訪問時的權(quán)限。
4)智能指引,當(dāng)調(diào)用目標(biāo)對象時,代理可以處理其他的一些操作。
新聞熱點(diǎn)
疑難解答