转载
转载
转载
static void Main(string[] args)
{
Mouse mouse = new Mouse("米奇", "黄色");
Cat cat = new Cat("米奇", "黄色", mouse);
cat.CatCome();
Console.ReadKey();
}
//被观察者
class Cat
{
private String _name;
private string _color;
delegate void MyDelegate();//自定义一个委托类型,该委托可以包装一个没有返回值和参数的方法
private event MyDelegate CatComeEventHandler;//利用委托声明定义一个事件。但是委托和事件并没有本质区别,只是事件不可以在定义它的类外部
//被访问。事件,具有特殊签名的委托。
public Cat(string name, string color, Mouse mouse)
{
this._name = name;
this._color = color;
this.CatComeEventHandler += mouse.MouseRun;//注册事件,将事件指向mouse.MouseRun方法
}
public void CatCome()
{
Console.WriteLine("名字为:" + _name + "的小猫叫了一声");
CatComeEventHandler();//利用事件调用被注册的方法。CatCome事件发生,被注册的事件也发生。这就是观察者模式。
}
}
//观察者
class Mouse
{
private String _name;
private String _color;
public Mouse(string name, string color)
{
_name = name;
_color = color;
}
public void MouseRun()
{
Console.WriteLine("名字为:" + _name + "的老鼠开始逃跑了");
}
}