using System; using System.Collections.Generic; namespace ObserverPattern { public interface IObserver { void Update(float temp, float humidity, float pressure); } public interface ISubject { void RegisterObserver(IObserver o); void RemoveObserver(IObserver o); void NotifyObservers(); } public interface IDisplayElement { void Display(); } public class WeatherSubject : ISubject { readonly List<IObserver> observers; float temperature; float pressure; float humidity; public void GetterMeasurements(float inTemperature, float inHumidity, float inPressure) { temperature = inTemperature; humidity = inHumidity; pressure = inPressure; NotifyObservers(); } public WeatherSubject() { observers = new List<IObserver>(); } #region ISubject Members public void RegisterObserver(IObserver o) { observers.Add(o); } public void RemoveObserver(IObserver o) { observers.Remove(o); } public void NotifyObservers() { foreach ( IObserver observer in observers ) { observer.Update(temperature, humidity, pressure); } } #endregion } }