.Net設計模式例項詳解
代理模式(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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 設計模式之單例模式詳解設計模式單例
- Net設計模式例項之裝飾者模式(Decorator Pattern)設計模式
- 詳解 state 狀態模式及在 C++ 設計模式程式設計中的使用例項C++設計模式程式設計
- 設計模式 - 原則及例項講解設計模式
- 設計模式例項講解 - 里氏替換設計模式
- 設計模式例項講解 - 介面隔離設計模式
- 設計模式例項講解 - 依賴倒置設計模式
- Net設計模式例項系列文章總結 薦設計模式
- 好程式設計師分享JavaScript名稱空間模式例項詳解程式設計師JavaScript模式
- Android 常用設計模式(二) -- 單例模式(詳解)Android設計模式單例
- Python設計模式之"外觀模式"例項講解Python設計模式
- 設計模式例項程式碼設計模式
- 設計模式例項講解 - 開放封閉設計模式
- Net設計模式例項之備忘錄模式(Memento Pattern)(2)設計模式
- 設計模式詳解設計模式
- 設計模式 - 代理模式詳解設計模式
- 設計模式:代理模式詳解設計模式
- Javascript設計模式Revealing Module 揭示模式單例模式詳解JavaScript設計模式單例
- 設計模式:命令模式(Command Pattern)及例項設計模式
- iOS設計模式詳解iOS設計模式
- Javascript設計模式詳解JavaScript設計模式
- 最新SS園設計模式例項剖析與深入解讀教程設計模式
- curl例項詳解
- sudo 詳解+例項
- LINUX Shell指令碼程式設計例項詳解(一)上Linux指令碼程式設計
- 設計模式使用例項(5)——建造者模式例項之資料庫連線管理設計模式資料庫
- C++設計模式+例項視訊教程C++設計模式
- 詳解 - 單例模式單例模式
- PHP 觀察者模式應用場景例項詳解PHP模式
- 設計模式【4】-- 建造者模式詳解設計模式
- 設計模式詳解——工廠模式(二)設計模式
- Java設計模式之策略模式詳解Java設計模式
- [設計模式]單例設計模式設計模式單例
- 詳解模板方法設計模式設計模式
- 四種設計模式詳解設計模式
- 詳解Python物件導向程式設計之類、例項、方法Python物件程式設計
- 元件例項 $el 詳解元件
- Crontab例項-命令詳解