新增测试类:
/** * 观察者:读者粉丝 * 来源微信公众号:Java技术栈 */ public class ObserverTest { public static void main(String[] args) { // 创建一个观察目标 JavaStackObservable javaStackObservable = new JavaStackObservable(); // 添加观察者 javaStackObservable.addObserver(new ReaderObserver("小明")); javaStackObservable.addObserver(new ReaderObserver("小张")); javaStackObservable.addObserver(new ReaderObserver("小爱")); // 发表文章 javaStackObservable.publish("什么是观察者模式?"); } }观察目标、观察者的创建并没有先后顺序要求,重点是发表文章通知观察者之前,观察目标要添加观察者列表这一步不能少。
输出结果:
通过这个简单的文章推送实践,大家应该对观察者模式有一个基本的认知了,在实际工作当中也可以有很多场景拿去用,就一对多的依赖关系都可以考虑使用观察者模式。
总结不容易啊,陆陆续续又肝了大半天,你学会观察者模式了吗?
观察者模式的优点是为了给观察目标和观察者解耦,而缺点也很明显,从上面的例子也可以看出,如果观察者对象太多的话,有可能会造成内存泄露。
另外,从性能上面考虑,所有观察者的更新都是在一个循环中排队进行的,所以观察者的更新操作可以考虑做成线程异步(或者可以使用线程池)的方式,以提升整体效率。
本节教程所有实战源码已上传到这个仓库:
https://github.com/javastacks/javastack
好了,今天的分享就到这里了,后面栈长我会更新其他设计模式的实战文章,公众号Java技术栈第一时间推送。Java技术栈《设计模式》系列文章陆续更新中,请大家持续关注哦!
最后,觉得我的文章对你用收获的话,动动小手,给个在看、转发,原创不易,栈长需要你的鼓励。
版权申明:本文系公众号 "Java技术栈" 原创,原创实属不易,转载、引用本文内容请注明出处,禁止抄袭、洗稿,请自重,尊重他人劳动成果和知识产权。