美文网首页
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)
主题
观察者

相关文章

  • 设计模式02-观察者者设计模式

    [toc] 设计模式02-观察者者设计模式 主要来源Head First设计模式(书)观察者设计模式是JDK中使用...

  • Summary of February 2017

    READING Head First 设计模式:完成50%。内容:观察者模式、装饰者模式、工厂模式、单件模式、命令...

  • Python观察者模式

    [python|高级篇|笔记|设计模式|观察者模式] 这两天读了[Head First设计模式][1]和[Pyth...

  • 好书推荐

    1、主要讲23种设计模式《Head First设计模式》

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

    1、本章的例子——气象站 气象站会实时更新气象数据,我们需要将数据进行展示 数据一旦更新,气象站会有一个方法被调用...

  • 2018-12-11

    head first html css word书籍 http权威指南 head first设计模式

  • 观察者模式 vs 发布订阅模式

    有一回面试,面试官问: 观察者模式,和发布订阅模式,有什么区别? 我脑海中立刻闪现了《Head First设计模式...

  • 设计模式--策略模式

    ps:本文主要来源于Head First 设计模式(抄Head First的),如有不懂请购买原书观看。 策略模式...

  • Swift设计模式-目录

    推荐图书:《Head First设计模式》《大话设计模式》《设计模式之禅》, 设计模式思维导图 图形说明一切: 设...

  • 观察者模式

    让你的对象知悉现状:观察者模式   这是《Head First设计模式(中文版)》第二章的读书笔记。   这一章讲...

网友评论

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

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