设计模式之观察者模式
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主体对象在状态发生改变时,会通知所有观察者对象,使他们能够自动更新自己。
通知者接口:
//通知者接口 interface ISubject { void Attach(Observer observer); void Datach(Observer observer); void Notify(); string SubjectState { get; set; } }
具体的通知者:
class Boss : ISubject { private IList<Observer> list = new List<Observer>(); private string action; public void Attach(Observer observer) { list.Add(observer); } public void Datach(Observer observer) { list.Remove(observer); } public void Notify() { foreach (var observer in list) { observer.Update(); } } public string SubjectState { get { return action; } set { action = value; } } }
抽象观察者:
abstract class Observer { protected string name; protected ISubject Subject; public Observer(string name, ISubject sub) { this.name = name; this.Subject = sub; } public abstract void Update(); }
具体观察者:
class StockObserver:Observer { public StockObserver(string name, ISubject sub) : base(name, sub) { } public override void Update() { Console.WriteLine("{0}{1} 关闭股票行情,继续工作",Subject.SubjectState,name); } }