今天复习了一下c sharp中的observer模式,记录一下。 定义委托HotDelegateEventHandler using System; using System.Collections.Generic; using System.Text; namespace ObserverTest { public delegate void HotDelegateEventHandler(int temperature); } 监视对象:加热器 using System; using System.Collections.Generic; using System.Text; namespace ObserverTest { /// <summary> /// 加热器(监视对象Subject) /// </summary> public class Heater { private int temperature; public event HotDelegateEventHandler OnBoil; public void Boil() { for (int i = 0; i < 100; i++) { temperature = i; if (temperature > 95) { if (OnBoil != null) { OnBoil(temperature); } } } } } } 监视者1:警报器 using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; namespace ObserverTest { /// <summary> /// 警报器(监视者Observer) /// </summary> public class Alarm { /// <summary> /// 发出警报 /// </summary> /// <param name="temperature"></param> public void MakeAlert(int temperature) { MessageBox.Show(string.Format("水开了:现在是{0}度",temperature.ToString())); } } } 监视者2:显示器 using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; namespace ObserverTest { /// <summary> /// 显示器(监视者Observer) /// </summary> public class Display { /// <summary> /// 显示水温 /// </summary> /// <param name="temperature"></param> public void Show(int temperature) { MessageBox.Show(string.Format("当前温度是{0}度",temperature.ToString())); } } } 主程序: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace ObserverTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Heater heater = new Heater(); Alarm alarm = new Alarm(); heater.OnBoil += alarm.MakeAlert; heater.OnBoil += new Display().Show; heater.Boil(); } } }