天天看點

Net設計模式執行個體之代理模式(Proxy Pattern)

代理模式(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,如需轉載請自行聯系原作者

繼續閱讀