观察者模式之烧开水

 观察者模式一直是架构设计中的重点模式

 比较常用的案例就是烧开水

 流程:烧水-->水烧开-->屏幕外显温度,报警器报警

 核心:委托和事件

    public delegate void WaterHeated(int i);
    public class WaterMachine
    {
        public event WaterHeated onWaterHeated;
        public void HeatWater()
        {
            for (int i = 0; i < 11; i++)
            {
                if (i < 10)
                {
                    Thread.Sleep(1000);
                    Console.WriteLine("水正在加热");
                }
                else
                {
                    OnWaterHeated(i);
                }
            }
        }

        internal void OnWaterHeated(int i)
        {
            if (onWaterHeated != null)
            {
                onWaterHeated(i);
            }
        }
    }

    public class Screen
    {
        public void ShowTemprature(int i)
        {
            Console.WriteLine("当前温度:{0}", i.ToString());
        }
    }

    public class Beeper
    {
        public void Alarm(int i)
        {
            Console.WriteLine("水已烧开");
        }
    }

static void Main(string[] args)
{
   //观察者
   WaterMachine wm = new WaterMachine();
   wm.onWaterHeated += (new Screen()).ShowTemprature;
   wm.onWaterHeated += (new Beeper()).Alarm;
   wm.HeatWater();
   Console.ReadKey();
}

猜你喜欢

转载自www.cnblogs.com/tiantianle/p/9247009.html