[Design Pattern] 代理模式 Proxy Pattern

Proxy => 透過代理 (Proxy) 間接操作真實物件

          => 強調間接性 => 大家都透過 Proxy '間接' 碰真實物件 => 所以所有行為都可以被 Proxy 掌控

也因此什麼時後需要用到 Proxy ?

1. 我想隱藏真實物件到底是誰 

2. 因為是透過 Proxy 間接操作 所以可以在 Proxy 中自己再做一些加工 例如 Cache, 權限, 其他...

 

可以得知程式碼會怎麼寫?

1. 真實物件一定不是 new 在主程式中 => 因為主程式中 new 的一定是 Proxy

2. 真實物件一定是 new 在 Proxy 中,所以呼叫 Proxy = 間接呼叫主程式

 

所以就能看程式碼了


using System;
using System.Collections.Generic;
using System.Linq;

namespace ConsoleApplication1
{
    /// <summary>
    /// Proxy 強調間接性 => 大家都透過我 '間接' 碰真實物件 => 所以所有行為都可以被我掌控
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            Proxy proxy = new Proxy();
            proxy.Request();

            /*
            1. 隱藏真實物件
            2. 因為是透過 Proxy 間接操作真實物件 所以可以再自己加工 例如 Cache, 權限, 其他...
            */
        }
    }

    abstract class BaseClass
    {
        public abstract void Request();
    }

    class RealClass : BaseClass
    {
        public override void Request()
        {

        }
    }

    /// <summary>
    /// 用戶端透過 Proxy 存取真實物件
    /// </summary>
    class Proxy : BaseClass
    {
        //真實物件被 new 在 Proxy 中
        RealClass realObj = new RealClass();

        public override void Request()
        {
            //透過 Proxy 間接操作真實物件
            realObj.Request();
        }
    }
}