[Design Pattern] 代理模式(Proxy)
代理模式如同字面上的意思,當我們想要做某件事的時候(ex:買衣服),不直接存取原始物件(直接找工廠),而是透過代理的管道(代理商)來處理。最常用到的大概有:
- 遠端代理(Remote):代理遠端程時執行,例如我們可以透過WebService的WSDL定義產生中介檔的函式庫,透過這個函式庫就可以存取WebService。
- 虛擬代理(Virtual):將需要秏費大量時間或是複雜的實體,利用代理模式的物件代替。
- 安全代理(Protect or Access):控制物件存取時的許可權。
- 智慧參考(Smart Reference):提供比原有物件更多的服務。
其它還有很多啦,像是快取也算是一種Proxy的應用,以UML架構表示如下:
簡單程式範例:
{
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 的標籤:Design Pattern