• 委托/事件:猫叫鼠跑人醒


    猫叫鼠跑人醒,这是一个很经典的   委托/事件  案例,本例中,猫类、鼠类、人类的基本属性不再累述,关键说一下  委托/事件。

    第一步:因此在定义完毕  委托/事件  之后,要让猫叫触发定义的事件,

    第二步:要给鼠对象、人对象订阅猫叫事件,以在猫叫触发事件时作出相应的反应。

    using System;

    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace CatCryRatRunMasterWake
    {
      /// <summary>
      /// define a delegate
      /// </summary>
      public delegate void CatCryEventHandle();

      class Program
      {
        static void Main(string[] args)
        {
          Cat cat = new Cat("Tom");
          Rat rat = new Rat("Jack", cat);
          Master master = new Master("Ls", cat);
          cat.Cry();

          Console.ReadKey();
        }
      }

      /// <summary>
      /// define a cat objects
      /// </summary>
      public class Cat
      {
        private string _name;

        //define a cat cry event
        public event CatCryEventHandle WhenCatCry;

        public Cat(string name)
        {
        _name = name;
          }

        public void Cry()
        {
          this.WhenCatCry();
          Console.WriteLine("猫叫!");
        }
      }

      /// <summary>
      /// define a rat objects
      /// </summary>
      public class Rat
      {
        private string _name;
        public Rat(string name, Cat cat)
        {
          _name = name;
          cat.WhenCatCry += Run; //订阅猫叫事件
        }

        public void Run()
        {
          Console.WriteLine("老鼠跑!");
        }
      }

      /// <summary>
      /// define a master objects
      /// </summary>
      public class Master
      {
        private string _name;
        public Master(string name, Cat cat)
        {
          _name = name;
          cat.WhenCatCry += WakeUp; //订阅猫叫事件
        }

        public void WakeUp()
        {
          Console.WriteLine("主人醒!");
        }
      }
    }

  • 相关阅读:
    中台入门系列1
    微服务 2.0 技术栈选型手册
    mysql计划任务每天定时执行
    更高效地提高redis client多线程操作的并发吞吐设计
    azure之MSSQL服务性能测试
    .NET Socket服务编程之-高效连接接入编
    轻易实现基于linux或win运行的聊天服务端程序
    零配置Socket TCP消息通讯服务容器EC
    azure存储压测的问题(农码主观意识太强被坑了)
    业务逻辑层缓存应该设计
  • 原文地址:https://www.cnblogs.com/jack-Leo/p/6404646.html
Copyright © 2020-2023  润新知