Exemplo n.º 1
0
 protected virtual void Notify(IObservale3 obj)
 { // 通知所有注册了的Observer
     foreach (IObserver3 observer in container)
     {
         observer.Update(obj); // 调用Observer的Update()方法
     }
 }
Exemplo n.º 2
0
        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) + ":水已经烧开了!!"));
            }
        }