Proxy Pattern using C# (转载)
Proxy Pattern(代理模式)屬于Structural Pattern(結構型模式),Proxy Pattern-為Client真正要調用的對象提供一個代理(Surrogate or placeholder),來控制Client對該對象的訪問。
?
1. UML class diagram:
上圖Proxy class就是一個代理類,負責轉發來自Client的請求到真正的RealSubject對象。Proxy Class和RealSubject Class共同繼承抽象類Subject。
?
2. Sample code
上述UML class diagram的實現代碼(from reference 1):
// Proxy pattern – Demo code
using System;
// 抽象類
abstract class Subject
{
? abstract public void Request();
}
// 實際要調用的類
class RealSubject : Subject
{
? override public void Request()
?{
??? Console.WriteLine("Called RealSubject.Request()");
?}
}
// 代理類
class Proxy : Subject
{
?? RealSubject realSubject;
?// Methods
? override public void Request()
?{
??? // Uses "lazy initialization"
??? if( realSubject == null )
????? realSubject = new RealSubject();
??? realSubject.Request();
?}
}
/// <summary>
/// Client test
/// </summary>
public class Client
{
? public static void Main( string[] args )
?{
??? // Create proxy and request a service
??? Proxy p = new Proxy();
??? p.Request();
?}
}
?
3. Appendix about the article
溫故而知新,運用于無形。
?
.Net Framework中大量使用到Proxy Design Pattern,如.Net Remoting中的SAO (Server Activated Object)或CAO (Client Activated Object),XML Web Services等,Client端都是通過本地Proxy class來轉發對Remote Objects or Services的請求,和獲取來自Remote的響應。
?
Reference:
1,Proxy Design Pattern, http://www.dofactory.com/patterns/PatternProxy.aspx
總結
以上是生活随笔為你收集整理的Proxy Pattern using C# (转载)的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 我的blog开张了,希望大家能多多赏光啊
- 下一篇: 女人梦到西葫芦是什么预兆
