程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> .net設計模式實例之代理模式(Proxy Pattern)

.net設計模式實例之代理模式(Proxy Pattern)

編輯:關於.NET

一、代理模式簡介(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)對其他對象提供一種代理以控制對這個對象的訪問。代理模 式分為遠程代理、虛擬代理、安全代理和智能指引。

出處:http://www.cnblogs.com/ywqu

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved