代理模式

 public class 代理模式
    {
        /*
        1.  追求者与被追求者共同继承同一个对象.

        2.  追求者的行为方式,依据接口来实现.

        3.  中间这个类.衔接 追求者和被追求者之间的平衡. 内置追求者. 把被追求者作为参数进行传入.
         */


        interface GiveGift
        {
            void GiveDools();

            void GiveFlowers();

            void GiveChocolate();
        }

        public abstract class Person
        {
            public string Name { get; set; }
            public int Age { get; set; }
        }

        public class SchoolGirl : Person
        {

        }

        public class PursuitBoy : Person, GiveGift
        {

            public void GiveChocolate()
            {
                Console.WriteLine($"{_schoolGirl.Name} :送你巧克力");
            }

            public void GiveDools()
            {
                Console.WriteLine($"{_schoolGirl.Name} :送你洋娃娃");
            }

            public void GiveFlowers()
            {
                Console.WriteLine($"{_schoolGirl.Name} :送你鲜花");
            }

            public PursuitBoy(SchoolGirl schoolGirl)
            {
                _schoolGirl = schoolGirl;
            }

            protected Person _schoolGirl { get; set; }

            //设置被追求者.
            public void UpdateGirlObj(Person schoolGirl)
            {
                _schoolGirl = schoolGirl;
            }
        }

        public class Proxy : GiveGift
        {
            protected PursuitBoy _pursuitBoy { get; set; }

            //设置追求者
            public void setPursuitObj(PursuitBoy pursuit)
            {
                _pursuitBoy = pursuit;
            }


            public void GiveChocolate()
            {
                _pursuitBoy.GiveChocolate();
            }

            public void GiveDools()
            {
                _pursuitBoy.GiveDools();
            }

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

        public static void TestData()
        {
            ConsoleFormate.consoleFormate(() =>
            {
                SchoolGirl schoolGirl = new SchoolGirl() { Name = "娇娇", Age = 18 };//被追求者.
                PursuitBoy pursuit = new PursuitBoy(schoolGirl); //追求者
                Proxy _proxy = new Proxy();//创建一个代理.
                _proxy.setPursuitObj(pursuit);//代理这个追求者送礼物.
                _proxy.GiveChocolate();
                _proxy.GiveDools();
                _proxy.GiveFlowers();
                Console.WriteLine("\r\n \r\n");
            }, @"代理模式");
        }

    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值