java observer_Java9弃用Observable类和Observer接口的替代方案

弃用原因:

他们没有为应用程序提供足够丰富的事件模型。例如,他们只能支持某些更改的概念,但不传达有关更改的任何信息。

不可序列化-因为,Observable不实现可序列化。因此,您既不能序列化Observable也不能对其子类进行序列化。

没有线程安全-方法可以被其子类覆盖,并且事件通知可以以不同的顺序发生,并且可能在不同的线程上发生,这足以破坏任何“线程安全”。

并且大多数问题都具有修复的复杂性,但仍然“未解决”或没有积极的发展,这就是不推荐使用的原因。

观察者模式的替代方案:对于更丰富的事件模型,请考虑使用该java.beans

程序包。为了在线程之间进行可靠且有序的消息传递,请考虑使用java.util.concurrent程序包中的并发数据结构之一

。有关反应式流样式的编程,请参见Flow API。

从java.beans包使用PropertyChangeEvent和PropertyChangeListener。

Listeners,类型很多,它们都有回调方法,不需要强制转换。

观察者设计模式有多种选择,而响应流就是其中之一。反应性流或流API(https://docs.oracle.com/javase/9​​/docs/api/java/util/concurrent/Flow.html)

Flow是一类在Java中9中引入并具有4个相互关联的接口:Processor,Publisher,Subscriber和Subscription。

Flow.Processor :既充当订户又充当发布者的组件。

Flow.Publisher :订户收到的项目的生产者。

Flow.Subscriber :消息的接收者。

Flow.Subscription:链接a

Flow.Publisher和的消息控件Flow.Subscriber。

参考资料

/questions/46380073/observer-is-deprecated-in-java-9-what-should-we-use-instead-of-it

stackoverflow.com/questions/46380073​

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值