观察者模式
观察者模式是非常常用的一种设计模式,在软件系统中,当一个对象的行为依靠另一个对象的状态时,观察者模式就非常有用。若不使用观察者模式提供通用结构,而需要实现其类似的功能,则只能在另一个线程中不停监听对象所依赖状态,在一个复杂的系统中,可能会因此开启很多线程来实现这一功能,这将使系统的性能产生额外的负担。观察者模式的意义也就在于此,他可以在单线程中,使某一对象,及时得知自身所依赖的状态变化
ISubject是被观察对象,它可以增加或者删除观察者,IOberver是观察者,它依赖于ISubject的状态变化,当ISubject状态发生变化时,会通过inform()方法通知观察者。
观察者模式可以用于监听、通知发布等场所,可以确定观察者在不使用轮询监控的情况下,及时收到相关消息和事件。
观察者模式角色
主题接口
interface ISubject {
void attach(IObserver observer);
void detach(IObserver observer);
void inform();
}
观察者接口:
interface IObserver {
void update(Event evt);
}
一个具体的主题实现,注意他维护了观察者队列,提供了增加和删除观察者的方法,并通过inform通知观察者
47