[Design Pattern] 代理模式(Proxy)

[Design Pattern] 代理模式(Proxy)

代理模式如同字面上的意思,當我們想要做某件事的時候(ex:買衣服),不直接存取原始物件(直接找工廠),而是透過代理的管道(代理商)來處理。最常用到的大概有:

  1. 遠端代理(Remote):代理遠端程時執行,例如我們可以透過WebService的WSDL定義產生中介檔的函式庫,透過這個函式庫就可以存取WebService。
  2. 虛擬代理(Virtual):將需要秏費大量時間或是複雜的實體,利用代理模式的物件代替。
  3. 安全代理(Protect or Access):控制物件存取時的許可權。
  4. 智慧參考(Smart Reference):提供比原有物件更多的服務。

 

其它還有很多啦,像是快取也算是一種Proxy的應用,以UML架構表示如下:

 

image

 

簡單程式範例:


{
    static void Main(string[] args)
    {
        IService proxy = new ProxyService();
        proxy.DoWork();
    }
}

interface IService
{
    void DoWork();
}

class ProxyService : IService
{
    private RemoteService _rs;
    public ProxyService()
    {
        _rs = new RemoteService();
    }
    public void DoWork()
    {
        _rs.DoWork();
    }
}

class RemoteService : IService
{
    public void DoWork()
    {
        Console.WriteLine("Hello Word");
    }
}

 

Technorati 的標籤: