送礼物案例搞定代理模式的应用

什么是代理模式呢,其实代理模式是我们造一个代理者,然后和这个代理者去通信,然后这个代理者其实是持有其他对象的,从而我们就可以通过控制这个代理对象而控制了代理对象所持有的对象。

//被接受礼物的类
class SchoolGirl
{
    //字段名称
    private string name;
    public string Name
        {
            get { return name; }
            set { name = value; }
        }
}

//送礼物的接口 设计代理者和实际要访问的对象共同的接口,我们是需要相同的服务的,统一接口很好
    interface GiveGift
    {
        //送洋娃娃
        void GiveDolls();

        //送花
        void GiveFlowers();

        //送巧克力
        void GiveChocolate();
    }

//实际追求者,也就实际送礼物的人 
 class Pursuit : GiveGift
    {
         //追求者必须认识被追求的人
        SchoolGirl mm;
        //构造函数,并且初始化把女孩指定给追求者
        public Pursuit(SchoolGirl mm)
        {
            this.mm = mm;
        }
        //追求者的行为
        public void GiveChocolate()
        {
            Console.WriteLine(mm.Name + "送给你巧克力。");
        }

        public void GiveDolls()
        {
            Console.WriteLine(mm.Name + "送给你洋娃娃。");
        }

        public void GiveFlowers()
        {
            Console.WriteLine(mm.Name + "送给你花。");
        }
    }

    //代理者
    class Proxy : GiveGift
    {
        //真正的追求者
        Pursuit gg;

        public Proxy(SchoolGirl mm)
        {
            gg = new Pursuit(mm);
        }
        public void GiveChocolate()
        {
            gg.GiveChocolate();
        }

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

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

    class Program
    {
        static void Main(string[] args)
        {
            //先构造被送礼物的对象
            SchoolGirl girl = new SchoolGirl();
            girl.Name = "孙小妹";

            //构造代理者,并且 把接受礼物的对象传过来
            GiveGift li = new Proxy(girl);

            li.GiveDolls();
            li.GiveFlowers();
            li.GiveChocolate();

        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你一身傲骨怎能输

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值