在设计一组对象与它们所依赖的对象之间一致(同步)的交流模型时,观察者模式(Observer Pattern)很有用,它可以使对象的状态与它们所依赖的对象的状态保持同步。 Observer Pattern推荐采用发布者--订阅者(publisher--subscriber)模型,使这组观察者(Observer)和主题(Subject)对象之间有清晰的界限。比较直观的形式是“注册--通知--撤消注册”。下面描述这样一个过程:
1.Observer将自己 注册到Subject中,Subject将Object存放在一个容器(Container)里。
2.Observer对象发生某种变化,从Container中得到所有注册过的Observer,将变化 通知Object。
3.Object告诉Subject要 撤消注册,Subject从Container中将Object除去。
为了实现这种机制主题需要为注册注销和通知提供一个接口。
//interface the all observer classes should implement
public interface IObserver
{
void Notify(object anObject);
}
1.Observer将自己 注册到Subject中,Subject将Object存放在一个容器(Container)里。
2.Observer对象发生某种变化,从Container中得到所有注册过的Observer,将变化 通知Object。
3.Object告诉Subject要 撤消注册,Subject从Container中将Object除去。
为了实现这种机制主题需要为注册注销和通知提供一个接口。
//interface the all observer classes should implement
public interface IObserver
{
void Notify(object anObject);
}
//interface that all observable classes should implement
public interface IObservable
{
void Register(IObserver anObserver);
void UnRegister(IObserver anObserver);
}
public interface IObservable
{
void Register(IObserver anObserver);
void UnRegister(IObserver anObserver);
}
下面是具体实现: