【发布时间】:2012-04-18 22:17:42
【问题描述】:
我是从 C# 世界来到 Java 的,在 C# 世界中,观察者模式被实现为带有 event 关键字的一流语言结构。
我看到 Java 从早期就有 Observable 类,但它显然存在实现问题并且似乎没有被广泛使用。到目前为止,我只是在我的 Java 代码中滚动我自己的观察者模式实现,但我总是忍不住认为必须有更好的替代方法来始终输出这个样板代码。 Swing 中有 Listener 类,但它们似乎不适用于非 Swing 代码。
对于这个非常常见的问题,推荐的解决方案是什么?第三方库对我来说没问题。
【问题讨论】:
-
为什么监听器类不适合非 Swing 代码?
-
似乎所有 EventListener 派生接口和类都在 Swing 和 AWT 包中。由于它们位于负责 UI 的包中,因此将它们用于非 UI 对我来说似乎是一种难闻的气味。 EventListener 是否在这些 UI 上下文之外使用?
-
谁会阻止您派生自己的侦听器类?
EventListener和EventObject都在java.util中,它们不以任何方式绑定到 AWT 或 Swing。 -
EventListener接口相当没用。它没有声明任何方法。
标签: java events observer-pattern observable