class Program { static void Main(string[] args) { BankAccount account = new BankAccount(); account.name = "aladdin"; account.money = 200; account.AddInfo(new Mobile()); account.AddInfo(new Email()); account.WithDraw(100); Console.Read(); } } abstract class ISubject { ArrayList arrs = new ArrayList(); public void AddInfo(IUpdate update) { this.arrs.Add(update); } public void Notify(string info) { //取完之后要通知各组件对象 foreach (IUpdate i in arrs) { i.Update(info); } } } //银行帐户 class BankAccount : ISubject { public string name; public int money; //取钱 public void WithDraw(int money) { this.money -= money; this.Notify(string.Format("{0}:取走{1}钱,还有{2}钱", this.name, money, this.money)); } } interface IUpdate { void Update(string info); } class Mobile : IUpdate { public void Update(string info) { Console.WriteLine("Mobile被通知了" + info); } } class Email : IUpdate { public void Update(string info) { Console.WriteLine("Email被通知了" + info); } }