事件的应用 观察者设计模式之猫捉老鼠
理解图
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Cat_Mouse
{
class Program
{
static void Main(string[] args)
{
Cat cat = new Cat("加肥猫","红色");
Mouse mouse1 = new Mouse("米奇老鼠1", "黑色",cat);
//Cat.actEvent += mouse1.RunAway;
Mouse mouse2 = new Mouse("米奇老鼠2", "绿色",cat);
//Cat.actEvent += mouse2.RunAway;
Mouse mouse3 = new Mouse("米奇老鼠3", "白色",cat);
//Cat.actEvent += mouse3.RunAway;
cat.CatComing();
Console.ReadKey();
}
}
}
Cat.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Cat_Mouse
{
class Cat
{
private string name;
private string color;
public Cat() { }
public Cat(string name,string color)
{
this.name = name;
this.color = color;
}
public string Name
{
get
{
return name;
}
set
{
value = name;
}
}
public string Color
{
get { return color; }
set { value = color; }
}
public void CatComing()
{
Console.WriteLine(color+"颜色的"+name+"来了,喵喵。。");
if (act!=null)
{
actEvent();
}
}
static public event Action actEvent;
}
}
Mouse.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Cat_Mouse
{
class Mouse
{
private string name;
private string color;
public Mouse() { }
public Mouse(string name, string color,Cat cat)
{
this.name = name;
this.color = color;
Cat.actEvent += this.RunAway;
}
public string Name
{
get
{
return name;
}
set
{
value = name;
}
}
public string Color
{
get { return color; }
set { value = color; }
}
public void RunAway()
{
Console.WriteLine("老猫来了"+color + "颜色的" + name + "赶紧跑。。。");
}
}
}