1.Cat类
Cat类中包含一个事件,当Cat状态发生改变时,触发该事件。
事件是一种特殊的委托,关键字是Event。与委托的不同之处在于:事件不能在类的外部触发,只能在类的内部触发。
class Cat
{
private string Name;
public event Action CatCome; //事件
public Cat(string name)
{
this.Name = name;
}
public void CatComing() //发布
{
Console.WriteLine(Name + " is coming");
if (CatCome != null)
{
CatCome();
}
}
}
2.Mouse类
Mouse类需要实时关注Cat的状态,从而执行自己的动作。所以需要将方法RunAway()注册到Cat类的事件event Action CatCome中。
class Mouse
{
private string Name;
public Mouse(string name)
{
this.Name = name;
}
public void RunAway()
{
Console.WriteLine(Name +" run! run! run !");
}
}
3.Main方法
创建对象,注册事件,实现订阅/发布模式。
static void Main(string[] args)
{
Cat cat = new Cat("加菲猫");
Mouse mouse1 = new Mouse("米奇");
Mouse mouse2 = new Mouse("唐老鸭");
cat.CatCome += mouse1.RunAway; //订阅
cat.CatCome += mouse2.RunAway;
cat.CatComing();
Console.ReadLine();
}