事件:一個用event進行了封裝的委托類型的變量,使得在進行注冊的時候只能使用+= 或者-=
需要一個觸發者和一個執行者,類似于Observer模式中的Subject和Observer(當一個對象的狀態發生改變時,所有依賴于他的對象都會得到通知并被自動更新。)
觸發者:對委托/事件進行定義,并觸發事件的執行。(Subject:監視對象,當達到條件時,會把參數發送給監視其的對象)
執行者:定義并執行事件中注冊的方法。(Observer:觀察者,當Subject中的事件執行時,會告知Observer,進而采取相應的行動)
- 執行者把需要執行的方法注冊給觸發者的事件
- 觸發者運行,當達到條件時觸發事件
- 通過第一步的注冊,將自動運行執行者中的方法
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);
}
}
?