观察者模式

观察者模式定义

定义对象间一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

这种设计模式也是常用的设计方法通常也叫发布 - 订阅模式,也就是事件监听机制,通常在某个事件发生的前后会触发一些操作。

观察者模式的原理

观察者模式原理也很简单,就是你在做事的时候旁边总有一个人在盯着你,当你做的事情是它感兴趣的时候,它就会跟着做另外一些事情。但是盯着你的人必须要到你那去登记,不然你无法通知它。观察者模式通常包含下面这几个角色:

Subject 就是抽象主题:它负责管理所有观察者的引用,同时定义主要的事件操作。

ConcreteSubject 具体主题:它实现了抽象主题的所有定义的接口,当自己发生变化时,会通知所有观察者。

Observer 观察者:监听主题发生变化相应的操作接口。

观察者的优点

1.观察者模式实现了观察者和目标之间的抽象耦合

2.观察者模式实现了动态联动

3.观察者模式支持广播通信

观察者的缺点

1.可能会引起无谓的操作

观察者模式应用场景:

  1. 一个方面的操作依赖于另一个方面的状态变化

  2. 在更改一个对象的时候,需要同时连带改变其他的对象,而且不知道究竟应该有多少对象需要更改

  3. 当一个对象必须通知其他的对象,但是你又希望这个对象和其他的被通知的对象是松散耦合的

代码实例

这部分上传好了,写的非常清晰,其中包括两部分,com.rui.example包是一个通用的例子

com.rui.jdk包使用的是java jdk自带的观察者模式,它的好处在于接口全部都封装好了

WeatherObserverPattenSe项目是观察者模式的变形,如果同一个事件发生,需要对不同的观察者不同的消息提示的实现。

代码实例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值