代理模式(Proxy Pattern)對其他對象提供一種代理以控制對這個對象的通路。
遠端代理,也就是為了一個對象在不同的位址空間提供局部代表。這樣可隐藏一個對象存在與不同地質空間的事實,隐藏對象所在的位址空間。
比如.Net Web Service ,當一個項目在加入一個Web引用,引用Web Service的時候會在項目中生成一個WebReference檔案夾和響應的檔案,這些檔案夾和檔案就是代理, 用戶端在調用此代理的時候實際上已經解決了遠端通路的問題。
虛拟代理,是根據需要建立開銷很大的對象。通過它來存放執行個體化需要很長時間的真實對象。這樣可以達到最優化的性能。
比如浏覽器使用代理模式優化網頁下載下傳,也就是首先展示網頁文字,圖檔需要一張一張地下載下傳後才能看到。
安全代理,用來控制真實對象通路時的權限。一般用于對象應該有不同的通路權限的時候。
智能指引,是指當調用真實的對象時,代理處理另外一些事情。比如,在通路一個實際對象前,檢查是否已經鎖定它,以確定其他對象不能改變它。也就是在通路一個對象時附加的一些内務處理。
1、抽象類 Subject
public abstract class Subject
{
public abstract void Request();
}
2、真實實體RealSubject 繼承于Subject
public class RealSubject:Subject
public override void Request()
{
Console.WriteLine("對象的真實實體方法在執行。");
}
3、代理類Proxy 繼承于Subject類,同時引用RealSubject類
public class Proxy:Subject
private RealSubject realSubject;
Console.WriteLine("通過代理類通路對象真實實體的方法。");
if (realSubject == null)
{
realSubject = new RealSubject();
}
realSubject.Request();
4、用戶端代碼
class Program
static void Main(string[] args)
Proxy proxy = new Proxy();
proxy.Request();
Console.Read();
代理模式(Proxy Pattern)對其他對象提供一種代理以控制對這個對象的通路。代理模式分為遠端代理、虛拟代理、安全代理和智能指引。
本文轉自 靈動生活 51CTO部落格,原文連結:http://blog.51cto.com/smartlife/269308,如需轉載請自行聯系原作者