观察者设计模式 --- 猫捉老鼠
被观察者
/// <summary>
/// 被观察者猫类
/// </summary>
class Cat
{
private string name;
private string color;
public event Action CatAction; // 声明被观察者事件
public Cat(string name, string color)
{
this.name = name;
this.color = color;
}
/// <summary>
/// 被观察者的状态发生改变
/// </summary>
public void CatComing()
{
Console.WriteLine(color + "的猫,"+name+"过来了");
if (CatAction != null)
CatAction();
}
}
观察者
/// <summary>
/// 观察者类老鼠
/// </summary>
class Mouse
{
private string name;
private string color;
public Mouse(string name, string color,Cat cat)
{
this.name = name;
this.color = color;
cat.CatAction += this.RunAway; // 把观察者(老鼠)自身的方法,注册到被观察者(猫)中
}
/// <summary>
/// 老鼠逃跑
/// </summary>
public void RunAway()
{
Console.WriteLine(color+"的老鼠,"+name+"说:猫来了。快跑");
}
}
调用观察者设计模式
class Program
{
static void Main(string[] args)
{
Cat cat = new Cat("加菲猫","黄色");
Mouse mouse1 = new Mouse("米老鼠","黄色",cat);
Mouse mouse2 = new Mouse("汤姆","灰色",cat);
cat.CatComing();
Console.ReadKey();
}
}