public void Implement()
        {
            Console.WriteLine("\nLearning Observer Pattern\n");
            WeatherData weatherData = new WeatherData(temperature: 40, pressure: 120, humidity: 20);

            Console.WriteLine(weatherData.ToString());
            IObserver sObserver = new StatisticsDisplay();

            weatherData.RegisterObserver(sObserver);
            IObserver fObserver = new ForecastDisplay();

            weatherData.RegisterObserver(fObserver);
            IObserver gObserver = new GeneralDisplay();

            weatherData.RegisterObserver(gObserver);
            weatherData.NotifyObserver();
            sObserver.Display();
            fObserver.Display();
            gObserver.Display();

            weatherData.DataChanged(temperature: 20, pressure: 80, humidity: 10);  //Just a dummy method which updates the weather data
            Console.WriteLine($"\nWeather changed {weatherData.ToString()}");
            sObserver.Display();
            fObserver.Display();
            gObserver.Display();

            Console.WriteLine("\nObserver Removed: General Display");
            weatherData.RemoveObserver(gObserver);
            weatherData.DataChanged(temperature: -20, pressure: 20, humidity: 0);  //Just a dummy method which updates the weather data
            sObserver.Display();
            fObserver.Display();
            gObserver.Display();
        }
Beispiel #2
0
        private static void TestObserverPattern()
        {
            WeatherData         weatherData         = new WeatherData();
            TemperatureReporter temperatureReporter = new TemperatureReporter();

            CurrentConditionsDisplay  currentConditionsDisplay  = new CurrentConditionsDisplay(weatherData);
            StatisticsDisplay         statisticsDisplay         = new StatisticsDisplay(weatherData);
            ForecastDisplay           forecastDisplay           = new ForecastDisplay(weatherData);
            HeatIndexDisplay          heatIndexDisplay          = new HeatIndexDisplay(weatherData);
            CurrentTemperatureDisplay currentTemperatureDisplay = new CurrentTemperatureDisplay(temperatureReporter);

            Temperature t = new Temperature {
                Temp = 80
            };

            temperatureReporter.TemperatureChanged(t);

            t.Temp = 82;
            temperatureReporter.TemperatureChanged(t);
            Console.WriteLine(currentTemperatureDisplay.Display());

            t.Temp = 78;
            temperatureReporter.TemperatureChanged(t);
            Console.WriteLine(currentTemperatureDisplay.Display());

            weatherData.SetMeasurements(80, 65, 30.4);
            weatherData.SetMeasurements(82, 70, 29.2);
            weatherData.SetMeasurements(78, 90, 29.2);

            Console.WriteLine(currentConditionsDisplay.Display());
            Console.WriteLine(statisticsDisplay.Display());
            Console.WriteLine(forecastDisplay.Display());
            Console.WriteLine(heatIndexDisplay.Display());
        }
Beispiel #3
0
        static void Main(string[] args)
        {
            //var dict = new Dictionary<string, Studente>();
            //Studente st = new Studente();
            //Persona p = st;

            //Pair p = new Pair("ciccio", true);

            //string f = (string)p.First;

            //var ps = new PairOfString("ciccio", "pippo");

            //PairOf<string, bool> pairOfStringAndBool
            //    = new PairOf<string, bool>();

            MeteoStationDelegate m = new MeteoStationDelegate();

            var d1 = new ForecastDisplay();
            var d2 = new AverageConditionsDisplay();

            m.AddDisplay(d1.Update);
            m.AddDisplay(d2.Update);

            m.Start();
        }
Beispiel #4
0
        public void WhenCreateForecastDisplayAndCallSetMeasurementsMethodExpectDisplayMethodReturnImprovingMessage()
        {
            var weatherData     = new WeatherData();
            var forecastDisplay = new ForecastDisplay(weatherData);

            weatherData.SetMeasurements(80, 50, 80);

            Assert.AreEqual("Forecast: Improving weather on the way!", forecastDisplay.Display());
        }
        public void ShouldObserveUpdate()
        {
            var weatherData = new WeatherData();

            var currentDisplay = new CurrentConditionsDisplay(weatherData);

            var forecastDisplay = new ForecastDisplay(weatherData);

            weatherData.SetMeasurements(80, 65, 30.4f);
        }
        public void WeatherData_CanRemoveObservers()
        {
            WeatherData      weatherData       = new WeatherData();
            IWeatherObserver statisticsDisplay = new StatisticsDisplay(weatherData);
            IWeatherObserver forecastDisplay   = new ForecastDisplay(weatherData);
            IWeatherObserver conditionsDisplay = new CurrentConditionsDisplay(weatherData);

            weatherData.RemoveObserver(statisticsDisplay);
            Assert.AreEqual(2, weatherData.SubscriberCount);
        }
Beispiel #7
0
        public void WhenCreateForecastDisplayAndCallSetMeasurementsMethodTwiceAndCurrentPressureIsLowerThanLastPressureExpectDisplayMethodReturn()
        {
            var weatherData     = new WeatherData();
            var forecastDisplay = new ForecastDisplay(weatherData);

            weatherData.SetMeasurements(80, 50, 80);
            weatherData.SetMeasurements(80, 50, 60);

            Assert.AreEqual("Forecast: Watch out for cooler, rainy weather", forecastDisplay.Display());
        }
Beispiel #8
0
        public void WhenCreateForecastDisplayAndCallSetMeasurementsMethodTwiceAndLastPressureIsEqualThanCurrentPressureExpectDisplayMoreOfTheSameMessage()
        {
            var weatherData     = new WeatherData();
            var forecastDisplay = new ForecastDisplay(weatherData);

            weatherData.SetMeasurements(80, 50, 80);
            weatherData.SetMeasurements(80, 50, 80);

            Assert.AreEqual("Forecast: More of the same", forecastDisplay.Display());
        }
Beispiel #9
0
        public void WhenCreateDisplayAndCallSetMeasurementsMethodExpectAllObserversAreNotified()
        {
            var weatherData = new WeatherData();
            var currentConditionsDisplay = new CurrentConditionsDisplay(weatherData);
            var forecastDisplay          = new ForecastDisplay(weatherData);

            weatherData.SetMeasurements(80, 50, 80);

            Assert.AreEqual("Current conditions: 80 F degrees and 50 % humidity", currentConditionsDisplay.Display());
            Assert.AreEqual("Forecast: Improving weather on the way!", forecastDisplay.Display());
        }
        public static void Start()
        {
            WeatherData weatherData = new WeatherData();
            CurrentConditionsDisplay currentDisplay    = new CurrentConditionsDisplay(weatherData);
            StatisticsDisplay        statisticsDisplay = new StatisticsDisplay(weatherData);
            ForecastDisplay          forecastDisplay   = new ForecastDisplay(weatherData);

            weatherData.SetMeasurements(80, 65, 30.4f);
            weatherData.SetMeasurements(82, 70, 29.2f);
            weatherData.SetMeasurements(78, 90, 29.2f);
        }
Beispiel #11
0
        public static void Run()
        {
            var weatherData = new WeatherData();
            var currentConditionsDisplay = new CurrentConditionsDisplay(weatherData);
            var forecastDisplay          = new ForecastDisplay(weatherData);
            var statisticsDisplay        = new StatisticsDisplay(weatherData);

            weatherData.SetMeasurements(30, 80, 50);
            weatherData.SetMeasurements(15, 80, 0);
            weatherData.SetMeasurements(25, 50, 0);
        }
Beispiel #12
0
        public void UpdateObservers()
        {
            WeatherData wd = new WeatherData();

            IObserver fd  = new ForecastDisplay(wd);
            IObserver sd  = new StatisticsDisplay(wd);
            IObserver ccd = new CurrentConditionsDisplay(wd);
            IObserver hi  = new HeatIndexDisplay(wd);

            wd.SetMeasurements(5.5f, 200f, 0.05f);
        }
        public void Main(string[] args)
        {
            WeatherData weatherData = new WeatherData();
            CurrentConditionsDisplay currentDisplay = new CurrentConditionsDisplay(weatherData);
            StatisticsDisplay statisticsDisplay = new StatisticsDisplay(weatherData);
            ForecastDisplay forecastDisplay = new ForecastDisplay(weatherData);
            HeatIndexDisplay heatIndexDisplay = new HeatIndexDisplay(weatherData);

            weatherData.SetMeasurements(80, 65, 30.4f);
            weatherData.SetMeasurements(82, 70, 29.2f);
            weatherData.SetMeasurements(78, 90, 29.2f);
        }
Beispiel #14
0
        static void Main(string[] args)
        {
            MeteoStationDelegate m = new MeteoStationDelegate();

            var d1 = new ForecastDisplay();
            var d2 = new AverageConditionDisplay();

            m.AddDisplay(d1.Update);        // Non si evoca il metodo Update ma l'indirizzo del metodo delegato, per questo non si usano le due parentesi;
            m.AddDisplay(d2.Update);

            m.Start();
        }
Beispiel #15
0
        static void Main(string[] args)
        {
            WeatherData weatherData = new WeatherData();

            CurrentConditionsDisplay currentDisplay  = new CurrentConditionsDisplay(weatherData);
            StatisticsDisplay        statsDisplay    = new StatisticsDisplay(weatherData);
            ForecastDisplay          forecastDisplay = new ForecastDisplay(weatherData);

            weatherData.setMeasurements(80, 65, 30.4f);
            weatherData.setMeasurements(82, 70, 29.2f);
            weatherData.setMeasurements(78, 90, 29.2f);
        }
Beispiel #16
0
        static void Main(string[] args)
        {
            var weatherData = new WeatherData();

            var currentConditionsDisplay = new CurrentConditionsDisplay(weatherData);
            var statisticsDisplay        = new StatisticsDisplay(weatherData);
            var forecastDisplay          = new ForecastDisplay(weatherData);
            var heatIndexDisplay         = new HeatIndexDisplay(weatherData);

            weatherData.SetMeasurements(80, 65, 30.4f);
            weatherData.SetMeasurements(82, 70, 29.2f);
            weatherData.SetMeasurements(78, 90, 29.2f);
        }
Beispiel #17
0
        static void Main(string[] args)
        {
            var data     = new WeatherData();
            var display1 = new CurrentConditionsDisplay(data);
            var display2 = new ForecastDisplay(data);
            var display3 = new StatisticsDisplay(data);
            var display4 = new HeatIndexDisplay(data);

            data.SetMeasurements(21.3f, 23.1f, 52.4f);
            data.SetMeasurements(42.3f, 33.1f, 52.4f);
            data.SetMeasurements(19.3f, 63.1f, 52.4f);
            data.SetMeasurements(80.0f, 0.4f, 0f);
        }
        private static void ObserverPattern()
        {
            WeatherData weatherData = new WeatherData();

            CurrentConditionsDisplay currentConditionsDisplay = new CurrentConditionsDisplay(weatherData);
            StatisticsDisplay        statisticsDisplay        = new StatisticsDisplay(weatherData);
            ForecastDisplay          forecastDisplay          = new ForecastDisplay(weatherData);
            HeatIndexDisplay         heatIndexDisplay         = new HeatIndexDisplay(weatherData);

            weatherData.setMeasurements(80, 65, 30.4f);
            weatherData.setMeasurements(82, 70, 29.2f);
            weatherData.setMeasurements(78, 90, 29.2f);
        }
        public void Test_WeatherStationHeatIndex()
        {
            WeatherData weatherData = new WeatherData();
            CurrentConditionsDisplay currentDisplay    = new CurrentConditionsDisplay(weatherData);
            StatisticsDisplay        statisticsDisplay = new StatisticsDisplay(weatherData);
            ForecastDisplay          forecastDisplay   = new ForecastDisplay(weatherData);
            HeatIndexDisplay         heatIndexDisplay  = new HeatIndexDisplay(weatherData);

            weatherData.SetMeasurements(80, 65, 30.4f);
            weatherData.SetMeasurements(82, 70, 29.2f);
            weatherData.SetMeasurements(78, 90, 29.2f);

            var result = statisticsDisplay.Display();
        }
        public ObserverPatternRunner()
        {
            rnd     = new Random();
            display = new ForecastDisplay();
            general = new GeneralDisplay();
            stats   = new StatsDisplay();
            station = new WeatherStation();
            data    = new WeatherData();

            station.AddObserver(display);
            station.AddObserver(general);
            station.AddObserver(stats);
            station.State = data;
        }
Beispiel #21
0
        public void weather_data_updates_forecast_correctly()
        {
            var wd      = new WeatherData();
            var display = new ForecastDisplay(wd);

            wd.SetMeasurements(20, 15, 73);
            Assert.AreEqual("Improving weather on the way!", display.Display());

            wd.SetMeasurements(40, 15, 40);
            Assert.AreEqual("Weather is getting bad!", display.Display());

            wd.SetMeasurements(0, 15, 40);
            Assert.AreEqual("More of the same", display.Display());
        }
        public static void Main()
        {
            WeatherData weatherData       = new();
            var         currentDisplay    = new CurrentConditionsDisplay(weatherData);
            var         statisticsDisplay = new StatisticsDisplay(weatherData);
            var         forecastDisplay   = new ForecastDisplay(weatherData);

            weatherData.SetMeasurements(new WeatherInfo(80, 65, 30.4f));
            weatherData.SetMeasurements(new WeatherInfo(82, 70, 29.2f));
            weatherData.SetMeasurements(new WeatherInfo(78, 90, 29.2f));

            forecastDisplay.Unsubscribe();
            weatherData.SetMeasurements(new WeatherInfo(62, 90, 28, 1f));
        }
        public void WeatherData_CanNotifyObservers()
        {
            WeatherData      weatherData       = new WeatherData();
            IWeatherObserver statisticsDisplay = new StatisticsDisplay(weatherData);
            IWeatherObserver forecastDisplay   = new ForecastDisplay(weatherData);
            IWeatherObserver conditionsDisplay = new CurrentConditionsDisplay(weatherData);

            weatherData.SetMeasurements(10, 20, 30);
            weatherData.RemoveObserver(statisticsDisplay);
            weatherData.SetMeasurements(40, 50, 60);
            weatherData.RemoveObserver(forecastDisplay);
            weatherData.SetMeasurements(70, 80, 90);
            weatherData.RemoveObserver(conditionsDisplay);
            weatherData.SetMeasurements(100, 810, 910);
        }
Beispiel #24
0
        static void Main(string[] args)
        {
            WeatherData weatherData = new WeatherData();

            CurrentConditionsDisplay currentDisplay    = new CurrentConditionsDisplay(weatherData);
            StatisticsDisplay        statisticsDisplay = new StatisticsDisplay(weatherData);
            ForecastDisplay          forecastDisplay   = new ForecastDisplay(weatherData);
            HeatIndexDisplay         heatIndexDisplay  = new HeatIndexDisplay(weatherData);

            weatherData.SetMesurements(80, 65, 30.4f);
            weatherData.SetMesurements(82, 70, 29.2f);
            weatherData.SetMesurements(78, 90, 29.2f);

            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            var weatherData = new WeatherData();

            var currentConditionsDisplay = new CurrentConditionsDisplay(weatherData);
            var forecastDisplay          = new ForecastDisplay(weatherData);
            var statisticsDisplay        = new StatisticsDisplay(weatherData);
            var heatIndexDisplay         = new HeatIndexDisplay(weatherData);

            weatherData.MeasurmentsChanged(
                new WeatherMeasurements()
            {
                Temperature = new Temperature()
                {
                    TemperatureType = Temperature.TemperatureTypeEnum.Fahrenheit,
                    Value           = 80
                },
                Humidty  = 65.0,
                Pressure = 30.4d
            }
                );

            weatherData.MeasurmentsChanged(
                new WeatherMeasurements()
            {
                Temperature = new Temperature()
                {
                    TemperatureType = Temperature.TemperatureTypeEnum.Fahrenheit,
                    Value           = 82
                },
                Humidty  = 70.0,
                Pressure = 27.2d
            }
                );

            weatherData.MeasurmentsChanged(
                new WeatherMeasurements()
            {
                Temperature = new Temperature()
                {
                    TemperatureType = Temperature.TemperatureTypeEnum.Fahrenheit,
                    Value           = 78
                },
                Humidty  = 90.0,
                Pressure = 29.2d
            }
                );
        }
Beispiel #26
0
        static void Main(string[] args)
        {
            Model.WeatherData weather    = new Model.WeatherData();
            var currentConditionsDisplay = new CurrentConditionDisplay(weather);
            var statisticsDisplay        = new StatisticsDisplay(weather);
            var forecastDisplay          = new ForecastDisplay(weather);
            var heatIndex = new HeatIndexDisplay(weather);

            weather.SetMeasurements(20, 10, 45);
            weather.SetMeasurements(32, 60, 100);

            statisticsDisplay = null;
            forecastDisplay.UnregisterObserver();

            weather.SetMeasurements(14, 80, 89);
            Console.ReadKey();
        }
Beispiel #27
0
        private static void Main(string[] args)
        {
            // http://www.codeproject.com/Articles/88278/Observer-in-NET-with-IObserver-T
            // http://www.dofactory.com/net/observer-design-pattern
            WeatherData wd = new WeatherData();
            CurrentConditionsDisplay d1 = new CurrentConditionsDisplay(wd);
            StatisticsDisplay        d2 = new StatisticsDisplay(wd);
            ForecastDisplay          d3 = new ForecastDisplay(wd);

            wd.SetMeasurements(15, 20, 50);
            Console.WriteLine();
            wd.SetMeasurements(25, 10, 10);
            Console.WriteLine();
            wd.SetMeasurements(0, 50, 10);

            Console.ReadKey();
        }
        public static void Run()
        {
            WeatherData weatherData = new WeatherData();

            CurrentConditionsDisplay currentDisplay    = new CurrentConditionsDisplay(weatherData);
            StatisticsDisplay        statisticsDisplay = new StatisticsDisplay(weatherData);
            ForecastDisplay          forecastDisplay   = new ForecastDisplay(weatherData);
            HeatIndex heatIndex = new HeatIndex(weatherData);

            // Simulate new weather measurements
            weatherData.SetMeasurements(80, 65, 30.4f);
            Console.WriteLine();
            weatherData.SetMeasurements(82, 70, 29.2f);
            Console.WriteLine();
            weatherData.SetMeasurements(78, 90, 29.2f);
            Console.WriteLine();
        }
Beispiel #29
0
        private void RunObserverPatternExample()
        {
            var weather   = new WeatherData();
            var observers = new IWeatherObserver[2];

            observers[0] = new CurrentWeatherDisplay();
            observers[1] = new ForecastDisplay();

            foreach (IWeatherObserver weatherObserver in observers)
            {
                weather.WeatherNotification += weatherObserver.UpdateWeatherDate;
            }

            weather.ChangeWeatherData();
            DisplayHumidityInListBox(observers);

            weather.ChangeWeatherData();
            DisplayHumidityInListBox(observers);
        }
Beispiel #30
0
        public static void Main(string[] args)
        {
            WeatherStation weatherStation = new WeatherStation();
            GeneralDisplay subscriber1    = new GeneralDisplay(weatherStation);

            weatherStation.MeasurementsChanged(20, 770, 50);

            ForecastDisplay subscriber2 = new ForecastDisplay(weatherStation);

            weatherStation.MeasurementsChanged(18, 769, 54);

            weatherStation.Unsubscribe(subscriber2);
            weatherStation.MeasurementsChanged(15, 750, 78);

            weatherStation.Unsubscribe(subscriber1);
            weatherStation.MeasurementsChanged(14, 745, 90);

            weatherStation.Subscribe(subscriber1);
            weatherStation.MeasurementsChanged(13, 740, 99);
        }
Beispiel #31
0
        public void weather_data_updates_observers_correctly()
        {
            var wd         = new WeatherData();
            var conditions = new CurrentConditionsDisplay(wd);
            var heat       = new HeatIndexDisplay(wd);
            var stats      = new StatisticsDisplay(wd);
            var forecast   = new ForecastDisplay(wd);

            wd.SetMeasurements(80, 65, 30.4f);
            Assert.AreEqual("Current Conditions: 80 celsius and humidity 65", conditions.Display());
            Assert.AreEqual("Heat index is 82.95535", heat.Display());
            Assert.AreEqual("Avg/Max/Min Temperature: 80/80/80", stats.Display());
            Assert.AreEqual("Improving weather on the way!", forecast.Display());

            wd.SetMeasurements(78, 90, 29.2f);
            Assert.AreEqual("Current Conditions: 78 celsius and humidity 90", conditions.Display());
            Assert.AreEqual("Heat index is 83.64967", heat.Display());
            Assert.AreEqual("Avg/Max/Min Temperature: 79/80/78", stats.Display());
            Assert.AreEqual("Weather is getting bad!", forecast.Display());
        }
        public static void Main(string[] args)
        {
            WeatherMonitor monitor = new WeatherMonitor();
            ForecastDisplay forecast = new ForecastDisplay();
            CurrentConditionsDisplay currentConditions = new CurrentConditionsDisplay();
            StatisticsDisplay statistics = new StatisticsDisplay();
            HeatIndexDisplay heatIndex = new HeatIndexDisplay();

            monitor.SetMeasurments(new WeatherData(80, 65, 30.4f));
            forecast.Subscribe(monitor);
            currentConditions.Subscribe(monitor);
            statistics.Subscribe(monitor);
            heatIndex.Subscribe(monitor);
            monitor.SetMeasurments(new WeatherData(82, 70, 29.2f));
            statistics.Unsubscribe();
            monitor.SetMeasurments(new WeatherData(78, 90, 29.2f));
            monitor.SetMeasurments(null);
            //weatherData.SetMeasurments(82, 70, 29.2f);
            //weatherData.SetMeasurments(78, 90, 29.2f);
            Console.ReadLine();
        }