public class Stock{ private ArrayList observers = new ArrayList(); private Random rand = new Random(); public Stock() { Timer timer = new Timer(3000); //Register an ElapsedEventHandler which will periodically triggere GeneratePrice timer.Elapsed +=new ElapsedEventHandler(GeneratePrice); timer.Start(); } public void register(Observer anObserver) { observers.Add(anObserver); } private void GeneratePrice(object sender, ElapsedEventArgs e) { double price = rand.NextDouble() * 100; // We will notify the observers now foreach(Object o in observers) { Observer anObserver = o as Observer; anObserver.update(price); } }}
public interface Observer{ void update(Object data);}
public class StockMonitor : Observer{ public void update(Object data) { Console.WriteLine("Price is " + data); }}
Stock s = new Stock();StockMonitor m = new StockMonitor();s.register(m);