观察者模式,用于处理类似订阅,满足一定条件之后执行的任务或者事件
1.声明委托,并添加到委托集合中
int _temperture; //温度
public delegate void DelegateHeater(int temperture);//委托
List<DelegateHeater> list_del = new List<DelegateHeater>();//委托集合
/// <summary>
/// 注册委托
/// </summary>
/// <param name="R_header"></param>
public void Register(DelegateHeater del_header)
{
list_del.Add(del_header);
}
/// <summary>
/// 注销委托
/// </summary>
/// <param name="C_header"></param>
public void CancelRegister(DelegateHeater del_header)
{
list_del.Remove(del_header);
}
2.声明委托要执行的事件,并通知注册的事件
/// <summary> /// 加热水温 /// </summary> public void Boliwater() { for (int i = 0; i < 100; i++) { if (i > 95) { _temperture = i; Notify(); break; } } }
/// <summary>
/// 通知注册的委托事件
/// </summary>
public void Notify()
{
list_del.ForEach((lst) => {
lst(_temperture);
});
}
/// <summary>
/// 提醒事件
/// </summary>
public void AlerMSG(int tempture)
{
MessageBox.Show("水温为:" + tempture);
}
/// <summary>
/// 显示事件
/// </summary>
public void ShowMSG(int tempture)
{
MessageBox.Show("显示水温为:" + tempture);
}
3.调用代码,实例
Heater ht = new Heater(); ht.Register(new Heater.DelegateHeater(ht.AlerMSG));//注册提示事件 ht.Register(new Heater.DelegateHeater(ht.ShowMSG));//注册显示事件 ht.Boliwater(); //开始任务 ht.CancelRegister(new Heater.DelegateHeater(ht.ShowMSG)); //注销事件 ht.CancelRegister(new Heater.DelegateHeater(ht.AlerMSG));//注销事件

浙公网安备 33010602011771号