protected virtual void Notify(IObservale3 obj) { // 通知所有注册了的Observer foreach (IObserver3 observer in container) { observer.Update(obj); // 调用Observer的Update()方法 } }
private bool isDisplayedType = false; // 标记变量,标示是否已经打印过 public void Update(IObservale3 obj) { // 这里存在一个向下转换(由继承体系中高级别的类向低级别的类转换) Heater3 heater = (Heater3)obj; // 打印产地和型号,只打印一次 if (!isDisplayedType) { Console.WriteLine("{0} - {1}: ", heater.Area, heater.Type); Console.WriteLine(); isDisplayedType = true; } if (heater.Temperature < 100) { // 通过热水器引用heater获取温度 Console.WriteLine( String.Format("Alarm".PadRight(7) + ":水快烧开了,当前温度:{0}。", heater.Temperature)); } else { Console.WriteLine( String.Format("Alarm".PadRight(7) + ":水已经烧开了!!")); } }