[Design Pattern] 代理模式(Proxy Pattern)
定義:提供其他物件一種代理,方便控制存取原始物件。
主要解決直接存取原始物件所帶來問題的一總常用手段。
假設你的系統需要和外部系統間接,由於外部系統某些原因無法讓你直接存取,
而你的系統直接存取可能也會帶來架構上的更動或操作上的麻煩,
這時外部系統可能會提供Web Service、WCF..等間接層讓你可以控制該物件,
而這個間接層就是所謂的代理(Proxy)。
適用場合:
1.遠端代理:代理遠端程式執行,如上面所提到的Web Service和WCF。
2.虛擬代理:將複雜或耗時實體利用物件替代。
3.安全代理:控制物件存取權限。
4.智慧參考:提供比原始物件更多服務。
UML:
假設今天我們系統要取的外部系統所提供的報表,
而外部系統提供兩個方法(傳送報表名稱或日期範圍)供我們使用。
簡單程式碼:
新增IReportService介面,讓Proxy和原本物件實做該介面。
原始物件
利用代理模式存取原始物件(Report)。
Client呼叫使用
結果
參考