.Net設計模式例項詳解

iDotNetSpace發表於2010-01-28
 一、代理模式簡介(Brief Introduction)

  代理模式(Proxy Pattern)對其他物件提供一種代理以控制對這個物件的訪問。

  二、解決的問題(What To Solve)

  1、遠端代理

  遠端代理,也就是為了一個物件在不同的地址空間提供區域性代表。這樣可隱藏一個物件存在與不同地質空間的事實,隱藏物件所在的地址空間。

  比如.Net Web Service ,當一個專案在加入一個Web引用,引用Web Service的時候會在專案中生成一個WebReference資料夾和響應的檔案,這些資料夾和檔案就是代理, 客戶端在呼叫此代理的時候實際上已經解決了遠端訪問的問題。

  2、虛擬代理

  虛擬代理,是根據需要建立開銷很大的物件。通過它來存放例項化需要很長時間的真實物件。這樣可以達到最優化的效能。

  比如瀏覽器使用代理模式優化網頁下載,也就是首先展示網頁文字,圖片需要一張一張地下載後才能看到。

  3、安全代理

  安全代理,用來控制真實物件訪問時的許可權。一般用於物件應該有不同的訪問許可權的時候。

  4、智慧指引

  智慧指引,是指當呼叫真實的物件時,代理處理另外一些事情。比如,在訪問一個實際物件前,檢查是否已經鎖定它,以確保其他物件不能改變它。也就是在訪問一個物件時附加的一些內務處理。

  三、代理模式分析(Analysis)

  1、代理模式結構

點選檢視大圖

  2、原始碼

  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;
  public override void Request()
  {
  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();
  }
  }

  3、程式執行結果

  四.案例分析(Example)

點選檢視大圖

  五、總結(Summary)

  代理模式(Proxy Pattern)對其他物件提供一種代理以控制對這個物件的訪問。代理模式分為遠端代理、虛擬代理、安全代理和智慧指引。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-626237/,如需轉載,請註明出處,否則將追究法律責任。

相關文章