(C#)代理模式


1.代理模式

  為其他對象提供代理以控制對這個對象的訪問。

  1. 遠程代理:為一個對象在不同的地址空間提供舉報代表。這樣可以隱藏一個對象在不同地址空間的事實。
  2. 虛擬代理:是依據需要創建開銷很大的對象。通過它來存放實例化需要長時間的真是對象。
  3. 安全代理:用來控制真實對象的訪問時的權限。
  4. 智能代理:指當調用真實對象時,代理處理另外一些事。

2.實例

namespace 代理模式
{
    class Program
    {
        static void Main(string[] args)
        {
            GirlMM mm = new GirlMM();
            mm.Name = "夏花";

            Proxy proxy = new Proxy(mm);

            proxy.GiveDolls();
            proxy.GiveFlowers();
            proxy.GiveChocolate();

            Console.ReadLine();
        }
    }

    /// <summary>
    /// 被代理對象執行的操作接口
    /// </summary>
    interface IGiveGift
    {
        void GiveDolls();
        void GiveFlowers();
        void GiveChocolate();
    }

    /// <summary>
    /// 被代理者希望代理執行操作的類
    /// </summary>
    class GirlMM
    {
        private string name;
        public string Name
        {
            get { return name; }
            set {name = value;}
        }
    }

    /// <summary>
    /// 被代理者
    /// </summary>
    class Pursuit: IGiveGift
    {
        GirlMM mm;  
        public Pursuit(GirlMM mm)
        {
            this.mm = mm;
        }

        public void GiveDolls()
        {
            Console.WriteLine(mm.Name+"送你洋娃娃");
        }
        public void GiveFlowers()
        {
            Console.WriteLine(mm.Name + "送你鮮花");
        }
        public void GiveChocolate()
        {
            Console.WriteLine(mm.Name + "送你巧克力");
        }
    }

    class Proxy:IGiveGift
    {
        Pursuit gg;

        public Proxy(GirlMM mm)
        {
            gg = new Pursuit(mm);

        }

        public void GiveDolls()
        {
            gg.GiveDolls();
        }
        public void GiveFlowers()
        {
            gg.GiveFlowers();
        }
        public void GiveChocolate()
        {
            gg.GiveChocolate();
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM