观察者模式

观察者模式

定义了对象之间的一对多依赖,当一个对象改变状态时,它的所有依赖者都可以收到通知并自动更新。

Observer Pattern类图示例
  • subject持有一个observer的列表/集合。
  • 当subject状态发生变化时,通过所有的已订阅的observer执行update方法。
  • subject与observer之间为松耦合的关系,subject并不知道observer的细节,只知道osbservers实现了update()方法。
  • 在构造observer时绑定订阅的subject,便于后续需要时进行解绑。

观察者模式典型的适用场景有:

  • RSS订阅
  • Spring事件驱动模型
Spring事件驱动模型类图
  • 事件机制的实现需要三个部分,事件源,事件,事件监听器
事件源: ApplicationEvent
事件: ApplicationContext
事件监听器: ApplicationListener
  • 接口ApplicationEvent继承自jdk的EventObject,通过source得到事件源。实现类ApplicationContextEvent表示ApplicaitonContext的容器事件。
  • ApplicationContext并不直接持有观察者列表,而是通过ApplicationEventMulticaster(事件广播器)代持。
  • ApplicationContextEvent发布事件时,实际调用applicationEventMulticaster的multicastEvent(ApplicationEvent event)方法。
  • ApplicationEventMulticaster维持一个applicationListeners的LinkedHashSet,以Source+ApplicationEvent类型为Key。
  • ApplicationContext作为spring的IOC容器,或者说应用上下文,在容器初始化时,加载ApplicationEvent与ApplicationListener的映射关系。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容