.net框架下的事件和委托理解起来比较困难,特别是委托这个特殊的类型学习起来总是要花点时间。
下面结合Observer模式做了一个简单的例子,希望对初学者有帮助。
首先建一个控制台应用程序。代码如下 :
Program.cs:
using System;
using System.Collections.Generic;
using System.Text;
namespace ObserverPattern
{
/// <summary>
/// 声明一个委托类型(即函数模板,指向函数的地址,.net五大类型之一)
/// </summary>
public delegate void PersonEventHandler();
/// <summary>
/// 声明一个观察者
/// </summary>
public class Light
{
private Person person = null;
public Light(Person p)
{
person = p;
person.backOrOut += new PersonEventHandler(p_backOrOut);
}
private void p_backOrOut()
{
if (person.Dir .ToUpper() == "OUT")
{
Console.WriteLine("你要出去,灯会自动熄灭的。");
}
else if (person.Dir .ToUpper() == "BACK")
{
Console.WriteLine("当您回到家的时候,灯会自动亮起来。");
}
}
}
/// <summary>
/// 声明一个主体
/// </summary〉
public class Person
{
private string dir;
public string Dir
{
get
{
return dir;
}
set
{
dir = value;