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;
 }
Esempio n. 3
0
        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);
         }
     }
 }
Esempio n. 5
0
 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;
 }
Esempio n. 6
0
 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;
         }
     }
 }
Esempio n. 9
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);
        }
Esempio n. 10
0
        /// <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;
        }
Esempio n. 11
0
        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();
        }