五分鐘一個設計模式之代理模式
阿新 • • 發佈:2019-02-01
認識代理模式
代理模式是通過建立一個代理物件,用這個代理物件去代表真實的物件,客戶端得到這個代理物件後,就想得到了真實的物件一樣。客戶端呼叫代理物件來執行任務,但任務實際上最重還是由真實物件完成的。
代理模式的本質是控制物件的訪問。
代理模式包含以下幾部分:
Subject:目標介面
RealSubject:具體的目標物件,繼承自Subject
Proxy:代理物件,繼承自Subject,使用Proxy可以代替使用RealSubject。
示例程式碼
interface Subject
{
void Request();
}
class RealSubject1:Subject
{
public void Request()
{
Console.WriteLine("request from RealSubject1");
}
}
class RealSubject2 : Subject
{
public void Request()
{
Console.WriteLine("request from RealSubject2");
}
}
//代理類,和具體的目標物件實現同樣的介面
class Proxy : Subject
{
private Subject realSubject;
public Proxy(Subject _subject)
{
realSubject = _subject;
}
//代理類並沒有真正執行任務,而是呼叫具體的目標物件來執行任務
//客戶端和具體目標物件之間,就有一定程度的間接性,這個地方可以增加程式的靈活性
public void Request()
{
// other method
realSubject.Request();
// other method
}
}
下面是客戶端的呼叫方式
class Program
{
static void Main(string[] args)
{
Proxy proxy = new Proxy(new RealSubject1());
proxy.Request();
proxy = new Proxy(new RealSubject2());
proxy.Request();
}
}
程式執行結果:
request from RealSubject1
request from RealSubject2