定义
定义对象间的一种一对多的关系,使得当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新
类图
代码
public abstract class Subject { protected IList<Observer> observers = new List<Observer>(); protected int state = 0; public abstract void Notify(); public abstract void Attach(Observer observer); public abstract void Detach(Observer observer); public abstract int GetState(); public abstract void ChangeState(int state); } public class ConcurentSubject : Subject { public override void Attach(Observer observer) { observers.Add(observer); } public override void Detach(Observer observer) { //remove observer from observers } public override void Notify() { foreach (var item in observers) { item.Update(this); } } public override int GetState() { return state; } public override void ChangeState(int state) { this.state = state; } }
public abstract class Observer { public abstract void Update(Subject sub); } public class ConcurentObserver : Observer { public override void Update(Subject sub) { int state = sub.GetState(); Console.WriteLine("new state is {0}", state); } }
public class Client { public static void Do() { Subject subject = new ConcurentSubject(); Observer observer1 = new ConcurentObserver(); Observer observer2 = new ConcurentObserver(); subject.Attach(observer1); subject.Attach(observer2); subject.ChangeState(1); subject.Notify(); subject.ChangeState(2); subject.Notify(); Console.ReadKey(); } }
优点
缺点
适用环境
原文:https://www.cnblogs.com/fmys/p/12509890.html