一、題外話
本節講一講代理模式,個人感覺代理模式非常簡單,使用起來幾乎沒有太大的困難,因此簡單講述即可。
二、定義
代理模式:為其他對象提供一種代理以控制對這個對象的訪問。
解釋:舉例來說,你想在美國買iphone6,但是你沒有到美國去,恰巧你有一朋友到美國出差,于是你讓朋友幫忙代買iphone6.整個過程就是代理模式,你是目標對象,你朋友作為代理,代你完成你想進行的操作。
三、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(); } }
四、優缺點及適用場合:
優點:
1)代理模式能將代理對象與真正被調用的對象分離,在一定程度上降低了系統的耦合度。
2)代理模式在客戶端和目標對象之間起到一個中介作用,這樣可以起到保護目標對象的作用。代理對象也可以對目標對象調用之前進行其他操作。
缺點:
1)在客戶端和目標對象增加一個代理對象,會造成請求處理速度變慢。
2)增加了系統的復雜度。
使用場景:
1)遠程代理,也就是為一個對象在不同的地址空間提供局部代表。這樣可以隱藏一個對象存在于不同地址空間的事實。
2)虛擬代理,根據需要創建開銷很大的對象。通過它來存放實例化需要很長時間的對象。
3)安全代理,用來控制真實對象訪問時的權限。
4)智能指引,當調用目標對象時,代理可以處理其他的一些操作。
新聞熱點
疑難解答