码迷,mamicode.com
首页 > 其他好文 > 详细

《Head First-Chapter2》观察者模式

时间:2016-04-29 18:20:16      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:

让你的对象,知悉现况

-----观察者模式

一、观察者模式

有多个观察者关注一个主题,当主题状态发生变化时,观察者们会得到通知,更新状态

1、认识观察者模式---订报纸

(1) 报社的业务是出版报纸
(2) 向某报社订报纸,只要他们有新报纸出版,就会给你送来。只要你是他们的订户,你就会一直收到新报纸
(3) 当你不想要报纸了,取消订阅,报社就不会再送新报纸了
(4) 只要报社还在运营,就会一直有人向他们订阅报纸或取消订阅
一句话:观察者模式 = 出版者(主题Subject)+  订阅者(观察者Observer)

2、定义

观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象(如报社)改变状态时,它的所有依赖者(订阅者)都会收到通知并自动更新。

技术分享

3、类图

技术分享


4、设计原则

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

观察者模式提供了这种对象设计,让主题和观察者之间松耦合。


二、实例:气象监测站

1、问题描述

利用WeatherData对象(Subject)取得数据,并更新三个布告板(Observer):目前状况、气象统计和天气预报。
观察者模式,一对多关系,在本例中,“WeatherData”是一,布告板是多
一旦WeatherDatae有新的测量,马上会更新布告板

技术分享

2、设计类图

      技术分享

3、code实现

1、接口

技术分享

2、主题对象

技术分享
技术分享

3、布告板

技术分享

4、测试

技术分享

三、java内置的观察者模式

1、java.util包中包含最基本的Observer接口Observeable类,可以使用推push或拉pull的方式传送数据

2、java内置的观察者模式设计气象监测站

技术分享

3、code实现

技术分享
技术分享
技术分享

四、总结

1、Observable是一个类,更zao的是,它甚至没有实现一个接口。总之,Observable的实现有许多问题,限制了它的使用和复用。
      (注,java内置观察者模式,notifyObservers()通知观察者次序不固定)
2、最佳实践:如果内置观察者模式满足需求,可用它,否则自己实现它。

《Head First-Chapter2》观察者模式

标签:

原文地址:http://blog.csdn.net/wwyl1001/article/details/51245915

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!