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(); }
public void OnSelect(GeneralDisplay d) { if (selected != null) { selected.Deselect(); } OnListElementSelectedEvent(d.displayed); selected = d; }
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); }
public void ForceSelect(int index) { if (selectable) { if (index < displayPool.usedObjects.Count) { GeneralDisplay d = displayPool.usedObjects[index].GetComponent <GeneralDisplay>(); OnSelect(d); } } }
private void Start() { if (display == null) { display = GetComponent <GeneralDisplay>(); if (display == null) { Debug.LogError("Player Display couldn't find GeneralDisplay on " + gameObject.name); } } PlayerManager.instance.activePlayer.OnPlayerDetailsChangeEvent += DisplayPlayer; }
private void Start() { if (display == null) { display = GetComponent <GeneralDisplay>(); if (display == null) { Debug.LogError("Company Display couldn't find Text on " + gameObject.name); } } PlayerManager.instance.activePlayer.OnActiveCompanyChangeEvent += PlayerCompanyChange; }
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 Display(IDisplayed[] toDisplay) { displayPool.ReleaseAll(); foreach (IDisplayed d in toDisplay) { GameObject g = displayPool.GetGameObject(); GeneralDisplay display = g.GetComponent <GeneralDisplay>(); display.Display(d); display.OnSelectEvent -= OnSelect; display.selectable = this.selectable; if (selectable) { display.OnSelectEvent += OnSelect; } } }
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); }
/// <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 static void Main(string[] args) { WeatherStation weatherStation = new WeatherStation(); GeneralDisplay subscriber1 = new GeneralDisplay("Display 1", weatherStation); weatherStation.MeasurementsChanged(20, 770, 50); GeneralDisplay subscriber2 = new GeneralDisplay("Display 2", weatherStation); weatherStation.MeasurementsChanged(18, 769, 54); subscriber1.Unsubscribe(); weatherStation.MeasurementsChanged(15, 750, 78); subscriber2.Unsubscribe(); weatherStation.MeasurementsChanged(14, 745, 90); subscriber1.Subscribe(weatherStation); subscriber2.Subscribe(weatherStation); weatherStation.MeasurementsChanged(13, 740, 99); weatherStation.MeasurementStopped(); }