这个问题用委托和事件来处理,首先定义一只猫:
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();
}
}
扩展性方面,以后添加任何新的猫叫接收者的时候,都不需要修改猫和所有已有接收者,只需要在主函数里绑定猫叫事件和新接收者的关系即可。