Administrator
发布于 2024-07-31 / 14 阅读
0
0

代理模式

问题描述

XX想要追求娇娇,但是她自己不好意思,就委托娇娇同伴的AA帮助他,XX给娇娇买了芭比娃娃、花、巧克力,并委托AA送给娇娇。

现在想用程序来描述这个故事,关键在于娇娇不认识XX。

代码实现

被追求者类

    public class SchoolGirl
    {
        public SchoolGirl(string name) 
        {
            mName = name;
        }

        public string GetName()
        {
            return mName; 
        }

        private string mName;
    }

送礼物的抽象类GiveGift

    public interface GiveGift
    {
        void GiveDolls();
        void GiveFlowers();
        void GiveChocolate();
    }

追求者类实现了送礼物的接口

class Pursuit:GiveGift
{
    SchoolGirl mGirl;
    public Pursuit(SchoolGirl girl)
    {
        mGirl = girl;
    }

    public void GiveDolls()
    {
        Console.WriteLine(mGirl.GetName() + " give you a doll");
    }

    public void GiveFlowers()
    {
        Console.WriteLine(mGirl.GetName() + " give you a Flower");
    }

    public void GiveChocolate()
    {
        Console.WriteLine(mGirl.GetName() + " give you a chocolate");
    }
}

代理类,唯一即认识追求者,又认识被追求着的类。

class Proxy : GiveGift
{
    Pursuit mLickingDog;

    public Proxy(SchoolGirl schoolGirl)
    {
        mLickingDog = new Pursuit(schoolGirl);
    }

    public void GiveDolls()
    {
        mLickingDog.GiveDolls();
    }

    public void GiveFlowers()
    {
        mLickingDog.GiveFlowers();
    }

    public void GiveChocolate()
    {
        mLickingDog.GiveChocolate();
    }
}
    class Program
    {
        static void Main(string[] args)
        {
            SchoolGirl jiaojiao = new SchoolGirl("jiaojiao");
            
            Proxy proxy = new Proxy(jiaojiao);
            proxy.GiveDolls();
            proxy.GiveFlowers();
            proxy.GiveChocolate();
        }
    }

结构组成

代理模式由三个主要角色组成:

  1. 访问接口:这里具体为送礼物的行为

  2. 实体类:这个例子中具体为追求者

  3. 替代实体的代理类:这个粒子中为代理

UML图


评论