protected virtual void Notify(IObservalble obj) { foreach (IObserver observer in container) { observer.Update(obj); } }
public void Update(IObservalble obj) { // 这里存在一个向下转换(由继承体系中高级别的类向低级别的类转换)。 Heater heater = (Heater)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) + ":水已经烧开了!!")); } }