

public abstract class Stock
{
private List<IObserver> observers = new List<IObserver>();
private String _symbol;
private double _price;
public Stock(String symbol, double price)
{
this._symbol = symbol;
this._price = price;
}
public void Update()
{
foreach (IObserver ob in observers)
{
ob.SendData(this);
}
}
public void AddObserver(IObserver observer)
{
observers.Add(observer);
}
public void RemoveObserver(IObserver observer)
{
observers.Remove(observer);
}
public String Symbol
{
get { return _symbol; }
}
public double Price
{
get { return _price; }
}
}
public class Microsoft : Stock
{
public Microsoft(String symbol, double price)
: base(symbol, price)
{ }
}
public interface IObserver
{
void SendData(Stock stock);
}
public class Investor : IObserver
{
private string _name;
public Investor(string name)
{
this._name = name;
}
public void SendData(Stock stock)
{
Console.WriteLine("Notified {0} of {1}'s " + "change to {2:C}", _name, stock.Symbol,stock.Price);
}
}
客户端程序代码如下:
class Program
{
static void Main(string[] args)
{
Stock ms = new Microsoft("Microsoft",120.00);
ms.AddObserver(new Investor("Jom"));
ms.AddObserver(new Investor("TerryLee"));
ms.Update();
Console.ReadLine();
}
}