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 wheatherData = new WheatherData { Temperature = 15.25f, Pressure = 25.25f, Humidity = 28.11f }; var conditionDisplay = new CurrentConditionDisplay(wheatherData); var statisticsDisplay = new StatisticsDisplay(wheatherData); var heatIndexDisplay = new HeatIndexDisplay(wheatherData); wheatherData.Humidity = 32.11f; wheatherData.WheatherDataChanged -= statisticsDisplay.Update; wheatherData.Pressure = 35.99f; wheatherData.WheatherDataChanged += statisticsDisplay.Update; wheatherData.Humidity = 11.11f; wheatherData.Pressure = 11.22f; wheatherData.Pressure = 11.22f; wheatherData.Pressure = 22.22f; wheatherData.Temperature = -115.25f; }
static void Main(string[] args) { var wheatherData = new WheatherData(); wheatherData.Temperature = 15.25f; wheatherData.Pressure = 25.25f; wheatherData.Humidity = 28.11f; var conditionDisplay = new CurrentConditionDisplay(wheatherData); var statisticsDisplay = new StatisticsDisplay(wheatherData); var heatIndexDisplay = new HeatIndexDisplay(wheatherData); wheatherData.Humidity = 32.11f; wheatherData.RemoveObserver(statisticsDisplay); wheatherData.Pressure = 35.99f; wheatherData.RegisterObserver(statisticsDisplay); wheatherData.Humidity = 11.11f; wheatherData.Pressure = 11.22f; wheatherData.Pressure = 11.22f; wheatherData.Pressure = 22.22f; wheatherData.Temperature = -115.25f; }
public ObserverWeatherDataUnitTest() { _weatherData = new WeatherData(); _currentConditionsDisplay = new CurrentConditionsDisplay(_weatherData); _forcastDisplay = new ForcastDisplay(_weatherData); _statisticsDisplay = new StatisticsDisplay(_weatherData); _heatIndexDisplay = new HeatIndexDisplay(_weatherData); }
public void WhenCreateStatisticsDisplayAndCallSetMeasurementsMethodOnceExpectDisplayMethodReturnStatisticsMessageAvg80Max80Min80() { var weatherData = new WeatherData(); var statisticsDisplay = new StatisticsDisplay(weatherData); weatherData.SetMeasurements(80, 50, 80); Assert.AreEqual("Avg/Max/Min temperature = 80 / 80 / 80", statisticsDisplay.Display()); }
static void Main(string[] args) { WeatherData observable = new WeatherData(); IObserver observer = new GeneralDisplay(observable); IObserver observerOther = new StatisticsDisplay(observable); observable.SetCurrentTemperature(12.2); observerOther.QuitObserve(); observable.SetCurrentTemperature(15.2); }
static void Main(string[] args) { WeatherData weatherData = new WeatherData(); CurrentConditionsDisplay currentDisplay = new CurrentConditionsDisplay(weatherData); StatisticsDisplay statisticsDisplay = new StatisticsDisplay(weatherData); weatherData.setMeasurements(80, 65, 30.4f); weatherData.setMeasurements(82, 70, 29.2f); weatherData.setMeasurements(78, 90, 29.2f); }
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 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); }
public static void Main(string[] args) { WeatherData weatherData = new WeatherData(); CurrentConditionDisplay currentDisplay = new CurrentConditionDisplay(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 DoObserver() { WeatherData weatherData = new WeatherData(); CurrentconditionDisplay currentDisplay = new CurrentconditionDisplay(weatherData); StatisticsDisplay stasticsDisplay = new StatisticsDisplay(weatherData); ForcastDisplay forecastDisplay = new ForcastDisplay(weatherData); weatherData.setMeasurements(80, 65, 30.4f); weatherData.setMeasurements(75, 33, 58.9f); weatherData.setMeasurements(31, 45, 34.7f); }
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); }
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); }
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 void weather_data_updates_statistics_correctly() { var wd = new WeatherData(); var display = new StatisticsDisplay(wd); wd.SetMeasurements(20, 15, 73); Assert.AreEqual("Avg/Max/Min Temperature: 20/20/20", display.Display()); wd.SetMeasurements(40, 15, 73); Assert.AreEqual("Avg/Max/Min Temperature: 30/40/20", display.Display()); wd.SetMeasurements(0, 15, 73); Assert.AreEqual("Avg/Max/Min Temperature: 20/40/0", display.Display()); }
private static void Main(string[] args) { WeatherData weatherData = new WeatherData(); //建立WeatherData对象 CurrentConditionsDisplay currentDisplay = new CurrentConditionsDisplay(weatherData); //建立订阅者 StatisticsDisplay statisticsDisplay = new StatisticsDisplay(weatherData); //建立订阅者 weatherData.SetMeasurements(80, 65, 30.4f); //模拟天气变化 weatherData.SetMeasurements(82, 75, 29.2f); weatherData.SetMeasurements(90, 80, 29.2f); Console.ReadLine(); }
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) { WeatherObservable weatherObservable = new WeatherObservable(0, 0, 0); CurrentConditionsDisplay currentConditionsDisplay = new CurrentConditionsDisplay(weatherObservable, 0, 0); weatherObservable.SetTemperature(10); weatherObservable.SetHumidity(20); weatherObservable.SetPressure(20); weatherObservable.RemoveObserver(currentConditionsDisplay); StatisticsDisplay statisticsDisplay = new StatisticsDisplay(weatherObservable, 0); weatherObservable.SetMeasurements(100, 200, 200); }
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 } ); }
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(); }
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(); }
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(); }
/// <summary> /// O padrão Observer define a dependência um-para-muitos entre objetos para que quando um objeto mude de estado todos os seus dependentes /// sejam avisados e atualizados automaticamente. /// </summary> public static void TestObserver() { WeatherData weatherData = new WeatherData(); ForecastDisplay forecastDisplay = new ForecastDisplay(); StatisticsDisplay statisticsDisplay = new StatisticsDisplay(); GeneralDisplay generalDisplay = new GeneralDisplay(); Console.WriteLine("Adding forecast display and setting temperature."); weatherData.AddObserver(forecastDisplay); weatherData.Temperature = 18.1f; Console.WriteLine(); Console.WriteLine("Adding statistics and general display and setting humidity."); weatherData.AddObserver(statisticsDisplay); weatherData.AddObserver(generalDisplay); weatherData.Humidity = 8.3f; Console.WriteLine(); Console.WriteLine("Removing statistics display and setting pressure."); weatherData.DeleteObserver(statisticsDisplay); weatherData.Pressure = 3.6f; }
public TestStatisticsDisplay() { weatherData = new WeatherData(); statisticsDisplay = new StatisticsDisplay(weatherData); }
public override void Initialize() { CollisionSystem system = new CollisionSystemSAP(); system.UseTriangleMeshNormal = true; // TODO: Should damping factors be left in their default states? (they were changed while adding kinematic bodies) world = new World(system); world.Gravity = new JVector(0, -PhysicsConstants.Gravity, 0); world.SetDampingFactors(1, 1); world.Events.ContactCreated += OnContact; space = new Space(); scene = new Scene { Camera = camera, Canvas = canvas, Space = space, World = world }; var stats = new StatisticsDisplay(); stats.Anchor = Alignments.Left | Alignments.Top; stats.Offset = new ivec2(10); stats.IsVisible = false; canvas.Clear(); canvas.Load("Canvas.json"); canvas.Add(stats); //canvas.Add(new RopeTester()); spawnHelper = new SpawnHelper(scene); // TODO: Load settings from a file. ControlSettings settings = new ControlSettings(); settings.MouseSensitivity = 50; // TODO: Set player position from a save slot. PlayerCharacter player = new PlayerCharacter(settings); player.Equip(new Sword(player)); player.Unlock(PlayerSkills.Grab); player.Unlock(PlayerSkills.Jump); player.Unlock(PlayerSkills.DoubleJump); player.Unlock(PlayerSkills.WallJump); //player.Unlock(PlayerSkills.Ascend); player.Unlock(PlayerSkills.Block); player.Unlock(PlayerSkills.Parry); player.Equip(new Sword(player)); // TODO: Load fragments from a save slot. scene.Add(player); var fragment = scene.LoadFragment("Demo.json"); //var fragment = scene.LoadFragment("Windmill.json"); player.Position = fragment.Origin + fragment.Spawn; CreateDebugCubes(); camera.Attach(new FollowView(camera, player, settings)); // TODO: Initialize renderer settings from a configuration file (based on user settings). // TODO: Set light color and direction based on time of day and weather. var renderer = scene.Renderer; renderer.Light.Direction = Utilities.Normalize(new vec3(-2, -0.75f, 2)); renderTargetUsers3D.Add(renderer); // Create visualizers. spaceVisualizer = new SpaceVisualizer(camera, space); jitterVisualizer = new JitterVisualizer(camera, world); jitterVisualizer.IsEnabled = true; MessageSystem.Subscribe(this, CoreMessageTypes.Keyboard, (messageType, data, dt) => { ProcessKeyboard((KeyboardData)data); }); }