在论坛经常看到 观察者模式,主要以猫、老鼠、主人作为例子:
我个人理解如下:
代码如下:
namespace Test
{
/// <summary>
/// 定义一个委托
/// </summary>
public delegate void MeDelegate();
/// <summary>
/// 定义一个服务端抽象类
/// </summary>
abstract class Master
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
/// <summary>
/// 定义事件
/// </summary>
public event MeDelegate eve;
public void Notifly()
{
if (eve != null)
{
eve();
}
}
public abstract void 叫();
}
/// <summary>
/// 定义一个猫类,继承于Master抽象类
/// </summary>
class Cat : Master
{
public override void 叫()
{
Console.WriteLine("小花猫喵喵叫!");
}
}
/// <summary>
/// 定义一个客户端抽象类
/// </summary>
abstract class Client
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
public abstract void 响应();
}
/// <summary>
/// 老鼠继承与客户端抽象类
/// </summary>
class Mouse : Client
{
public override void 响应()
{
Console.WriteLine("小老鼠逃跑");
}
}
/// <summary>
/// 人继承客户端抽象类
/// </summary>
class Person : Client
{
public override void 响应()
{
Console.WriteLine("主人醒来!");
}
}
class Program
{
static void Main(string[] args)
{
Cat c = new Cat();
Mouse m = new Mouse();
Person p = new Person();
//注册时间
c.eve+=new MeDelegate(m.响应);
c.eve+=new MeDelegate(p.响应);
c.叫();
//触发事件
c.Notifly();
}
}
}
通过这个例子可以深刻的理解:事件是类发生被管住的事情时用来提供通知的一种方式!!!!!