委托、事件的个人理解

事件:一个用event进行了封装的委托类型的变量,使得在进行注册的时候只能使用+= 或者-=

需要一个触发者和一个执行者,类似于Observer模式中的Subject和Observer(当一个对象的状态发生改变时,所有依赖于他的对象都会得到通知并被自动更新。)

触发者:对委托/事件进行定义,并触发事件的执行。(Subject:监视对象,当达到条件时,会把参数发送给监视其的对象)

执行者:定义并执行事件中注册的方法。(Observer:观察者,当Subject中的事件执行时,会告知Observer,进而采取相应的行动)

  1. 执行者把需要执行的方法注册给触发者的事件
  2. 触发者运行,当达到条件时触发事件
  3. 通过第一步的注册,将自动运行执行者中的方法
 class Program
{
static void Main(string[] args)
{
General general = new General();
Solider solider = new Solider(general);

general.GiveOrder("Fire"); //2.触发者运行

Console.ReadLine();
}
}

class General
{
public delegate void GeneralDel(string order);
public event GeneralDel GeneralEvent;

public void GiveOrder(string order)
{
GeneralEvent(order); //3.触发事件,自动运行事件中注册的方法
}
}

class Solider
{
public Solider(General general)
{
general.GeneralEvent += new General.GeneralDel(ExecuteOrder); //1.注册方法
}

public void ExecuteOrder(string order)
{
Console.WriteLine("Solider {0}", order);
}
}

 

posted @ 2012-01-10 15:26  Müller  阅读(177)  评论(0编辑  收藏  举报