.net 程序设计:猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。

2025-01-07 09:37:24
推荐回答(1个)
回答1:

这个问题用委托和事件来处理,首先定义一只猫:

    public class Cat
    {
        public delegate void DeleMiao();
        public event DeleMiao EventMiao;
        public void Miao()
        {
            Console.WriteLine("猫叫了");
            EventMiao.Invoke();
        }
    }

然后定义主人、老鼠和其它任何猫叫的接收类:

    public class Master
    {
        public void Wake()
        {
            Console.WriteLine("主人醒了");
        }
    }

    public class Rat
    {
        public void Run()
        {
            Console.WriteLine("老鼠跑了");
        }
    }

    //扩展
    public class Others
    {
        public void Anything()
        {
            Console.WriteLine("anything");
        }
    }

最后在主函数里把猫和这几个接收者关联起来:

    class Program
    {
        static void Main(string[] args)
        {
            Cat cat=new Cat();
            Master master=new Master();
            Rat rat=new Rat();
            cat.EventMiao += master.Wake;
            cat.EventMiao += rat.Run;
            Others others=new Others();
            cat.EventMiao += others.Anything;
            cat.Miao();
            Console.ReadKey();
        }
    }

扩展性方面,以后添加任何新的猫叫接收者的时候,都不需要修改猫和所有已有接收者,只需要在主函数里绑定猫叫事件和新接收者的关系即可。