public interface ISubject
{
void register(IObserver o);
void remove(IObserver o);
void notify();
}
public interface IObserver
{
void update(float temp,float humidity,float pressure);
}
public class ObserverA:IObserver
{
private float temperature;
private float humidity;
private ISubject iweatherData;
public ObserverA(ISubject iweatherData)
{
this.iweatherData = iweatherData;
iweatherData.register(this);
}
public void update(float temperature, float humidity, float pressure)
{
this.temperature = temperature;
this.humidity = humidity;
display();
}
public void display()
{
Console.WriteLine("temperature:" + temperature);
}
}
public class Weatherdata : ISubject
{
private List<IObserver> observers;
private float temperature;
private float humdity;
private float pressure;
public Weatherdata()
{
observers = new List<IObserver>();
}
public void register(IObserver o)
{
observers.Add(o);
}
public void remove(IObserver o)
{
observers.Remove(o);
}
public void notify()
{
for (int i = 0; i < observers.Count; i++)
{
IObserver observer = observers[i];
observer.update(temperature, humdity, pressure);
}
}
public void setMeasurements(float temperature, float humidity, float pressure)
{
this.temperature = temperature;
this.humdity = humidity;
this.pressure = pressure;
notify();
}
}
class Program
{
static void Main(string[] args)
{
Weatherdata data = new Weatherdata();
ObserverA oa = new ObserverA(data);
data.setMeasurements(80, 60, 40);
Console.Read();
}
}