很顯然.我們目前所生活的世界裡.到處都有這類人.他們很願意協助我們去完成我自身完成起來很困難的工作.願意充當一個中介層.在這一個層次中.Proxy代理就是主導.他會為我們處理那些看上去很彆扭的事情.畢竟我們的目的是制定總體方針.兒細節可以交給代理來完成.事實上,很多情況.我們都用到了代理.例如典型的我們在.NET中使用WebService就已經在使用Proxy.通過這個代理和實際的遠程對象打交道.實際的遠程對象又是通過WebService做介面來傳遞.這也就是所謂的遠程代理.當然還有很多的代理例子.如.你要寫一個又許可權的東西.所以客戶不能自己和這種東西打交道.所以,由代理來系統管理權限而客戶通過代理來和實際對象打交道.這也就是所謂的保護代理.實際上由於是代理所以客戶也無需管理實際對象的釋放和建立.這也是通過代理來完成的.
假設.我是一個騎士正要被一位美麗的公主接見.我很榮幸.不幸的是公主只和在這次戰役有戰功的人見面.所以必須出示我的勳章.才可以和公主見面.OK讓我們來類比這一場面.
namespace ProxyMeeting
{
using System;
intface IMeeting
{
void KMeeting();
}
class Knight : IMeeting
{
private bool exploit ;
private string KName;
public Knight(string KN)
{
從資料庫查詢是否有功績
this.exploit=IsExploit;
}
public void Request()
{
if(exploit)
Console.WriteLine("接見成功");
else
Console.WriteLine("無法接見");
}
}
class Proxy : IMeeting
{
private Knight KM;
public string KName;
public void Request()
{
if (KM == null)
KM = new Knight(this.KName);
KM.Request();
}
}
//實際見面
public class Infanta
{
public static int Main(string[] args)
{
//公主並不直接和騎士打交道.而是通過代理
Proxy p = new Proxy();
p.KName="yarshray";
P.Request();
return 0;
}
}
}
這裡可以看出.公主並未和騎士直接打交道而是通過代理.即使騎士的建立工作也是由代理來完成.並且代理也管理了騎士是否在這次戰役中建立功勳.來決定最終是否和公主見面.一切都很我們預想的一樣不是嗎?