设计模式之观察者模式-Java内置观察者及总结
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了设计模式之观察者模式-Java内置观察者及总结,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2276字,纯文字阅读大概需要4分钟。
内容图文
观察者下篇
在上一篇文章中,我们通过污污弹公司司小司做气象站项目学习了观察者模式怎么使用。在本篇中,我们对观察者模式进行总结及关键点,还有一个就是Java中内置的观察者模式。
本文出处:凯哥Java(kagejava)
一:Java内置的观察者
我们将使用Java内置的观察者将气象站项目重新写一次。
内置观察者的区别:
Subject对象:
1:subject名称变了,变成了Observable了;功能不变,还是注册、移除、通知观察者三个功能;
2:observable是对象而非接口了,所以在使用的时候,不能在使用实现了,需要使用继承关系。好处就是:因为是继承关系,所以在注册观察者、移除观察者、通知观察者这三个方法具体实现我们可以不用写了。
Observer对象:
observer对象名字没有变化,功能还是update,没有变化。 而且还是接口对象。
那么为什么observer不用类而用接口呢?因为我们知道,我们的observer是不同的项目,需求不一定的。所以,只能使用接口来定义了。具体实现,各个项目根据自己项目功能自行实现即可。
不同:update时候,可以选择将信息主动推送给观察者还是让观察者自己来拉去。在Java内置的观察者模式中,推/拉都可以。
使用Java内置观察者实现的代码:
项目结构:
测试类:JavaObserverWeatherMainTest
需要说明的:
public class CurrentConditionJava implements Observer {}
实现的Observer对象所在位置:import java.util.Observer;
public class WeaterDataJava extends Observable {}
继承的Observerable对象所在位置:import java.util.Observable;
运行结果:
达到我们预期的效果。说明,使用Java内置的观察者模式成功!
使用Java内置的观察者需要唯一注意的地方:observerable的继承者在datachange时候,需要先setChanged()。如下图:
这一点一定要注意。
二:观察者模式总结及关键点
百科上对观察者模式基本介绍:
实现方式:
观察者模式使用场景:
观察者模式四个角色:
抽象主题角色(subject)、主题角色具体实现类
抽象观察者角色(observer)、观察者具体实现类
观察者模式的优缺点:
观察者模式执行过程
从观察者模式中体会,松耦合、高内聚、隔离影响的意义:
松耦合:类与类之间不要太依赖,没有顺序。依赖类不用关系被依赖类的内部是怎么实现的。
对应天气站项目:实现了subject接口的天气对象不需要关系具体的公告板内部怎么实现的,需要做哪些。subject子类之关心公告板是否实现了observer接口类即可。
联系凯哥:
公众号:凯哥Java(kaigejava)
凯哥个人博客:www.kaigejava.com
留个言,加个好友,一起学习
就算实现了observer的公告板对象项目死掉了,subject对象依然可以正常运行。反之,就算subject项目死掉了,依然不会影响observer项目的运行。无非就是公告板不能公布最新数据而已。这就很好的体现了松耦合的好处。
高内聚:对象内部是高内聚的。这样便于调试、扩展等。
内容总结
以上是互联网集市为您收集整理的设计模式之观察者模式-Java内置观察者及总结全部内容,希望文章能够帮你解决设计模式之观察者模式-Java内置观察者及总结所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。