代理模式(Proxy) 定義 代理模式(Proxy),為其他對象提供一種代理以控制對這個對象的訪問。 類圖 描述 Subject,定義了ConcreteSubject和Proxy的共用介面,這樣就可以在任何使用ConcreteSubject的地方使用Proxy; Proxy,保存一個Concrete ...
代理模式(Proxy)
定義
代理模式(Proxy),為其他對象提供一種代理以控制對這個對象的訪問。
類圖
描述
Subject,定義了ConcreteSubject和Proxy的共用介面,這樣就可以在任何使用ConcreteSubject的地方使用Proxy;
Proxy,保存一個ConcreteSubject引用使得Proxy可以訪問ConcreteSubject實體,並提供一個與Subject相同的介面,這樣Proxy就可以用來替代ConcreteSubject;
ConcreteSubject,定義Proxy所代理的真實實體。
應用場景
之前訪問google的時候,Client只需要發送一個Request給google伺服器,google伺服器在接收到這個請求之後就會把頁面Response給Client。
雖然現在不能直接訪問google了,但是有時候Client又希望能夠用到google,此時就可以使用代理,讓代理伺服器幫忙轉發Client的請求。
類圖如下:
public abstract class WebSite { public abstract void Request(string url); public abstract string Response(); } public class Google : WebSite { public override void Request(string url) { Console.WriteLine("get " + url); } public override string Response() { return "Google"; } } public class Proxy : WebSite { private Google google; public Proxy(Google google) { this.google = google; } public override void Request(string url) { this.google.Request(url); } public override string Response() { return this.google.Response(); } }