Observer模式,又叫发布/订阅模式,定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
public class Observer
{
public void OnNotify(int evt)
{
}
}
public class Subject
{
private Dictionary<int, List<Observer>> observers;
public Subject()
{
observers = new Dictionary<int, List<Observer>>();
}
public void AddObserver(int evt, Observer observer)
{
List<Observer> list;
if (!observers.TryGetValue(evt, out list)) {
list = new List<Observer>();
observers.Add(evt, list);
}
list.Add(observer);
}
public void RemoveObserver(int evt, Observer observer)
{
List<Observer> list;
if (observers.TryGetValue(evt, out list))
{
list.Remove(observer);
}
}
public void Notify(int evt)
{
List<Observer> list;
if (observers.TryGetValue(evt, out list))
{
foreach (Observer observer in list)
observer.OnNotify(evt);
}
}
}
PS. 我的设计模式系列blog,《设计模式》专栏,通过简单的示例演示设计模式,对于初学者很容易理解入门。深入学习请看GoF的《设计模式》。