美文网首页
Head First 设计模式(2)观察者模式

Head First 设计模式(2)观察者模式

作者: kaiker | 来源:发表于2021-07-10 13:32 被阅读0次

    1、本章的例子——气象站

    气象站会实时更新气象数据,我们需要将数据进行展示

    气象站
    • 数据一旦更新,气象站会有一个方法被调用


      气象站更新数据方法
    • 如果在measurementsChanged里更新数据,是面向实现编程的,而且和气象站的方法耦合


      错误实现

    2、观察者模式

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

    • 观察者实现一个接口,发布信息的主题实现一个接口
    • 观察者可以组合到主题中,这样主题可调用观察者实现的统一的接口方法进行通知、更新。
    • 主题是具有状态的对象,并且可以控制这些状态
    观察者模式类图
    • 所有展示数据的看板实现Observer和DisplayElement接口
    • 气象站实现主题接口


      改造之后的气象站
    • 将所有观察者组合到气象站中,气象站调用notify方法,里面调用update就可通知所有观察者


      气象站通知的方式

    3、设计模式

    为了交互对象之间的松耦合设计而努力

    • 当两个对象之间松耦合,他们依然可以交互,但是不太清楚彼此细节。

    4、Java内置的观察者

    java.util.Observer // 观察者 接口
    java.util.Observable // 可观察者 类

    • 继承这个类
    • 调用setChanged()方法,标记状态已改变
    • 调用notifyObservers() 或 notifyObservers(Object arg)
    • 观察者把主题组合到自己类中 update(Observable o, Object arg)
    主题
    观察者

    相关文章

      网友评论

          本文标题:Head First 设计模式(2)观察者模式

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