设计模式(24) -- 观察者模式


之前也写过观察者模式的文章,链接地址
https://blog.****.net/baidu_21349635/article/details/90602485
[观察者模式和 事件委托]

现在重新加深下观察者模式的理解。

需求

设计模式(24) -- 观察者模式

传统方式实现

设计模式(24) -- 观察者模式
设计模式(24) -- 观察者模式
设计模式(24) -- 观察者模式
CurrentConditions
设计模式(24) -- 观察者模式
WeatherData
设计模式(24) -- 观察者模式
Client
设计模式(24) -- 观察者模式
设计模式(24) -- 观察者模式

缺点

设计模式(24) -- 观察者模式

观察者模式

设计模式(24) -- 观察者模式
设计模式(24) -- 观察者模式

观察者模式解决天气预报需求

设计模式(24) -- 观察者模式
Observer
设计模式(24) -- 观察者模式
CurrentConditions
设计模式(24) -- 观察者模式
BaiduSite
设计模式(24) -- 观察者模式
Subject
设计模式(24) -- 观察者模式
WeatherData

  • 类是核心
  1. 包含最新的天气情况信息
  2. 含有 观察者集合,使用ArrayList管理
  3. 当数据有更新时,就主动的调用 ArrayList, 通知所有的(接入方)就看到最新的信息
    设计模式(24) -- 观察者模式
    Client
    设计模式(24) -- 观察者模式
    运行结果:设计模式(24) -- 观察者模式

观察者模式的好处

设计模式(24) -- 观察者模式

观察者模式在 Jdk 应用的源码分析

设计模式(24) -- 观察者模式
设计模式(24) -- 观察者模式

推荐观察者模式好文章