public void BoilWater() { // 烧水 for (int i = 0; i <= 99; i++) { temprature = i + 1; if (temprature > 97) { // 当水快烧开时(温度>97度),通知Observer BoiledEventArgs e = new BoiledEventArgs(temprature, type, area); OnBoiled(e); } } }
private bool isDisplayedType = false; // 标记变量,标示是否已经打印过 public void Update(BoiledEventArgs e) { // 打印产地和型号,只打印一次 if (!isDisplayedType) { Console.WriteLine("{0} - {1}: ", e.Area, e.Type); Console.WriteLine(); isDisplayedType = true; } if (e.Temperature < 100) { Console.WriteLine( String.Format("Alarm".PadRight(7) + ":水快烧开了,当前温度:{0}。", e.Temperature)); } else { Console.WriteLine( String.Format("Alarm".PadRight(7) + ":水已经烧开了!!")); } }
// 供子类覆盖,以便子类拒绝被通知,或者添加额外行为 protected virtual void OnBoiled(BoiledEventArgs e) { base.Notify(e); // 调用基类方法,通知Observer }