zoukankan      html  css  js  c++  java
  • 事件委托发布-订阅

    发布器(publisher) 是一个包含事件和委托定义的对象。事件和委托之间的联系也定义在这个对象中。发布器(publisher)类的对象调用这个事件,并通知其他的对象。

    订阅器(subscriber) 是一个接受事件并提供事件处理程序的对象。在发布器(publisher)类中的委托调用订阅器(subscriber)类中的方法(事件处理程序)。

       /// <summary>
        /// 抽象类
        /// </summary>
        public abstract class EatFood
        {
    
            private Mom mom;
    
            public EatFood(Mom _mom)
            {
                mom = _mom;
                mom.Eat += Mom_Eat;
            }
    
            public abstract void Mom_Eat();
        }
       /// <summary>
        /// 发布者
        /// </summary>
        public class Mom
        {
            //定义Eat事件,用于发布吃饭消息
            public event Action Eat;
    
            public void Cook()
            {
                Console.WriteLine("妈妈 : 饭好了");
                //饭好了,发布吃饭消息
                Eat?.Invoke();
            }
        }
    
        /// <summary>
        /// 订阅者
        /// </summary>
        public class Dad : EatFood
        {
            public Dad(Mom mom) : base(mom)
            {
                //爸爸去吃饭
                Console.WriteLine("爸爸订阅了妈妈煮好饭的消息");
            }
    
            public override void Mom_Eat()
            {
                //爸爸去吃饭
                Console.WriteLine("爸爸 : 吃饭了。");
            }
        }
    
        /// <summary>
        /// 订阅者
        /// </summary>
        public class Child : EatFood
        {
            public Child(Mom mom) : base(mom)
            {
                //爸爸去吃饭
                Console.WriteLine("孩子订阅了妈妈煮好饭的消息");
            }
    
    
            public override void Mom_Eat()
            {
                //熊孩子LOL呢,打完再吃
                Console.WriteLine("孩子 : 打完这局再吃。");
            }
        }
    

      

    Mom mom = new Mom();

    Dad dad = new Dad(mom);
    Child child = new Child(mom);

    mom.Cook();

  • 相关阅读:
    【洛谷P2860】冗余路径
    【CF1042D】Petya and Array 离散化+树状数组
    【洛谷P2127】序列排序
    【洛谷P4462】异或序列
    【SPOJ10707】COT2
    【CF1119D】Frets On Fire
    【CF1119E】Pavel and Triangles
    【洛谷P1903】数颜色
    hdu 3488(KM算法||最小费用最大流)
    hdu 1853(拆点判环+费用流)
  • 原文地址:https://www.cnblogs.com/itclw/p/13440692.html
Copyright © 2011-2022 走看看