1. 程式人生 > >五分鐘一個設計模式之代理模式

五分鐘一個設計模式之代理模式

認識代理模式

代理模式是通過建立一個代理物件,用這個代理物件去代表真實的物件,客戶端得到這個代理物件後,就想得到了真實的物件一樣。客戶端呼叫代理物件來執行任務,但任務實際上最重還是由真實物件完成的。

代理模式的本質是控制物件的訪問。

代理模式包含以下幾部分:
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