美文网首页
观察者模式

观察者模式

作者: 架构路上的一亩三分地 | 来源:发表于2017-03-15 15:42 被阅读0次
    观察者模式

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

    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的映射关系。

    相关文章

      网友评论

          本文标题:观察者模式

          本文链接:https://www.haomeiwen.com/subject/thglnttx.html