[Design Pattern] 代理模式(Proxy Pattern)

[Design Pattern] 代理模式(Proxy Pattern)

 

定義:提供其他物件一種代理,方便控制存取原始物件。

 

主要解決直接存取原始物件所帶來問題的一總常用手段。

假設你的系統需要和外部系統間接,由於外部系統某些原因無法讓你直接存取,

而你的系統直接存取可能也會帶來架構上的更動或操作上的麻煩,

這時外部系統可能會提供Web Service、WCF..等間接層讓你可以控制該物件,

而這個間接層就是所謂的代理(Proxy)。

 

適用場合:

1.遠端代理:代理遠端程式執行,如上面所提到的Web Service和WCF。

2.虛擬代理:將複雜或耗時實體利用物件替代。

3.安全代理:控制物件存取權限。

4.智慧參考:提供比原始物件更多服務。

 

UML:

image

 

假設今天我們系統要取的外部系統所提供的報表,

而外部系統提供兩個方法(傳送報表名稱或日期範圍)供我們使用。

 

簡單程式碼:

新增IReportService介面,讓Proxy和原本物件實做該介面。

image

 

原始物件

image

 

利用代理模式存取原始物件(Report)。

image

 

Client呼叫使用

image

 

結果

image

 

 

參考

Proxy pattern

大話設計模式