示例#1
0
        static void Main(string[] args)
        {
            ISubject weatherStation = new WeatherStation();

            weatherStation.AddObserver(new TemperatureDisplay());
            weatherStation.AddObserver(new HumidityDisplay());
            weatherStation.AddObserver(new PressureDisplay());

            while (true)
            {
                string   line   = Console.ReadLine();
                string[] values = line?.Split(' ');

                if (values?.Length == 3)
                {
                    WeatherParameters weatherParameters = new WeatherParameters
                    {
                        Temperature = Double.Parse(values[0]),
                        Humidity    = Double.Parse(values[1]),
                        Pressure    = Double.Parse(values[2])
                    };

                    weatherStation.NotifyObservers(weatherParameters);
                }
            }
        }
示例#2
0
        private static void RunWeatherDemo()
        {
            WeatherSubject  subject   = new WeatherStation(16);
            WeatherObserver observer  = new HomeThermostat();
            WeatherObserver observer2 = new HomeThermostat();


            WeatherObserver auto = new Car(130, 45);

            subject.AddObserver(observer);
            subject.AddObserver(observer2);
            subject.AddObserver(auto);



            (subject as WeatherStation).SetTemperature(10);
            Console.WriteLine(auto.ToString());
            (subject as WeatherStation).SetTemperature(4);
            Console.WriteLine(auto.ToString());
            (subject as WeatherStation).SetTemperature(30);
            Console.WriteLine(auto.ToString());
        }