2.观察者模式(Observer )

Head-First-Design-Patterns-master\src\headfirst\designpatterns\observer

例子:

建立追踪目前的天气状况(温度、湿度、气压),三种布告板,分别显示imuqian的状况,气象统计及简单的预报,当WeatherObject对象获得罪行的测量数据时,三种布告板必须实时更新

还是一个可以扩展的气象站,可以公布一组API,让其他开发人员可以写出自己的气象布告板

客户使用气象站之后,使用每个布告板都要付钱

 

观察者模式=出版者+订阅者

订报纸形式

出版者=“主题"(Subject)

订阅者="观察者"(Observer)

 

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

 

Java API有内置的观察者模式:java.util包(package)内包含最基本的Observer接口与Observer类

将对象实现观察者接口(java.util.Observer),然后调用任何Observable对象的addObserver()方法。不想再当观察者时可以调用deleteObserver()方法即可。

观察者将通知送出去:利用扩展的Observable接口产生“可观察者”类,然后,需要两个步骤:先调用setChanged()方法,标记状态已经改变的事实。然后调用两种notifyObservers()方法中的一个notifyobservers()或者notifyobservers(object arg)

观察者如何接收通知update(Observable o,Object arg)

观察者模式不仅可以主动推数据,也可以让观察者拉数据

java自带的观察者模式中observable是一个类,与之前讲的面向接口编程有违背之处,且Observable将关键的方法保护起来,违反了多用组合,少用继承,限制了他的使用和复用。

在JavaBeans中荷Swing中都使用到了观察者模式,如Button按钮事件。

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值