对于Java中观察者模式的理解

最近学习有关Rxjava有关知识,上来就被观察者模式给唬住了,其实观察者模式本质上就是接口的回调!


Android中有大量的观察者模式的运用,诸如,按钮的点击事件,ListView中的notifyDataSetChanged(),广播机制等等都是观察者模式的运用,其实微信公众号的订阅也是一种观察者模式的运用。那么观察者模式的定义是什么呢?----------在对象之间定义一对多的依赖,当对象改变时,依赖他的对象都会收到改变通知

java中通过Observer接口 和 Observable类来实现观察者模式。即观察者类实现Observer接口,被观察者继承Observable类。这里我们先手动现实一下简单的观察者模式,在运用Java中的观察者模式。


举个例子,英雄联盟中,英雄血量发生变化,通知英雄能力发生改变(如奥拉夫,血量越少,攻速越快)。

这里的英雄血量就是要被观察的对象,英雄能力是观察者。

首先看看被观察要实现的接口:

这里的Observer就是观察者接口:



看看具体被观察者的具体实现类:


观察者的实现类:




测试结果:



这里我们就实现一个简陋的观察者,这里还是比较呆的,如果英雄的其他属性发生改变,需要改写的就很多了。看看Java中自带的观察者如果实现的,我们改写我们的程序。去除我们自己的接口。


改写之后的被观察实现类:


观察者实体类:


测试结果不变。



仔细分析的话,其实就是接口的回调。观察者模式被大量的运用,理解这一模式的构成有助于我们对程序设计的理解。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容