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(); }
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()); }
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(); }
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); }
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()); }
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()); }
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); }
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); }
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); }
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(); }
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); }
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); }
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; }
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); }
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 } ); }
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(); }
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(); }
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); }
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); }
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(); }