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
}
}