事件委托发布-订阅

发布器(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();

原文地址:https://www.cnblogs.com/itclw/p/13440692.html