委托可以以松散的耦合性使两个对象相互调用.
应用中也就是A类干活.干到一半了,需要B类协助,然后继续执行.
利用委托使类干的活可以单一化.需要别的类配合时只需执行一
个委托.不必关心配合类是怎样工作的.
比如:
A人要从停车厂开走车,开到大门时发现大门锁了,通知B人去开门.
B人去开门并告知门A人已经打开了.
这时A人再开走车.
A只管开车和说声"快点开门"
B只管开门.
class Oven
{
public delegate void DelegateOnTemperature(int temperature);
private int _temperature;
private DelegateOnTemperature _listener;
public void BroadcastTemperature()
{
_listener(_temperature);
}
public void AddTemperatureListener(DelegateOnTemperature listener)
{
_listener += listener;
}
}
class Controler
{
public Controler(Oven oven)
{
oven.AddTemperatureListener(new Oven.DelegateOnTemperature(this.OnTemperature));
}
public void OnTemperature(int temperature)
{
Console.WriteLine("Temperature(" + temperature + ")");
}
}