設計模式-------代理模式(ProxyPattern)

人物: 卓賈易   戴勵  嬌嬌

實現要求: 桌賈易心裏喜歡嬌嬌, 戴勵與嬌嬌關係好,桌賈易也和戴勵關係好,所以,桌賈易讓戴勵代替自己給嬌嬌送禮物。


第一版: 沒有代理的代碼

                

第二版:只有代理


第三版:符合實際要求

 定義一個接口類,讓追求者類實現送禮物的接口,讓代理類也實現送禮物的藉口,但是在代理方法中調用“追求者類”的方法 



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

namespace ProxyPattern
{
    class Program
    {
        static void Main(string[] args)
        {  
            SchoolGirl jiaojiao = new SchoolGirl();
            jiaojiao.Name = "嬌嬌";
            Proxy daili = new Proxy(jiaojiao);
            daili.GiveDolls();
            daili.GiveFlowers();
            daili.GiveChocolate();
            Console.Read();
        }
    }
}

interface IGiveGift
{
    void GiveDolls();
    void GiveFlowers();
    void GiveChocolate();
}

class SchoolGirl
{
    private string name;
    public string Name
    {
        get{return name;}
        set { name = value;}
    }
}


class Pursuit:IGiveGift     // 讓追求者實現送禮物的接口
{
    SchoolGirl mm;
    public Pursuit(SchoolGirl 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(SchoolGirl mm)
    {
        gg = new Pursuit(mm);
    }
    public void GiveDolls()
    {
        gg.GiveDolls(); 
    }
    public void GiveFlowers()
    {
        gg.GiveFlowers();
    }
    public void GiveChocolate()
    {
        gg.GiveChocolate();
    }
}


代理模式: 爲其他對象提供一種代理以控制對這個對象的訪問。



發佈了112 篇原創文章 · 獲贊 16 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章