观察者模式定义
定义对象间一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
这种设计模式也是常用的设计方法通常也叫发布 - 订阅模式,也就是事件监听机制,通常在某个事件发生的前后会触发一些操作。
观察者模式的原理
观察者模式原理也很简单,就是你在做事的时候旁边总有一个人在盯着你,当你做的事情是它感兴趣的时候,它就会跟着做另外一些事情。但是盯着你的人必须要到你那去登记,不然你无法通知它。观察者模式通常包含下面这几个角色:
Subject 就是抽象主题:它负责管理所有观察者的引用,同时定义主要的事件操作。
ConcreteSubject 具体主题:它实现了抽象主题的所有定义的接口,当自己发生变化时,会通知所有观察者。
Observer 观察者:监听主题发生变化相应的操作接口。
观察者的优点
1.观察者模式实现了观察者和目标之间的抽象耦合
2.观察者模式实现了动态联动
3.观察者模式支持广播通信
观察者的缺点
1.可能会引起无谓的操作
观察者模式应用场景:
一个方面的操作依赖于另一个方面的状态变化
在更改一个对象的时候,需要同时连带改变其他的对象,而且不知道究竟应该有多少对象需要更改
当一个对象必须通知其他的对象,但是你又希望这个对象和其他的被通知的对象是松散耦合的
代码实例
这部分上传好了,写的非常清晰,其中包括两部分,com.rui.example包是一个通用的例子
com.rui.jdk包使用的是java jdk自带的观察者模式,它的好处在于接口全部都封装好了
WeatherObserverPattenSe项目是观察者模式的变形,如果同一个事件发生,需要对不同的观察者不同的消息提示的实现。