- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Collections;
- namespace ObserverDemo
- {
- 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);
- }
- }
- }
c#实现观察者模式(集合版)
最新推荐文章于 2024-03-13 19:43:11 发布