Java事件:这是一种很好的方式吗?

Java事件:这是一种很好的方式吗?,java,events,Java,Events,我正在用Java重新实现一个.NETAPI,该API指定了一系列事件,EhichJava并不隐式支持 我将使用观察者模式,但由于事件的数量,我真的不想让界面变得混乱 我想知道声明一个“Event”类是否是一个好主意,该类有一个subscribe方法,该方法接受一个“EventHandler接口”和一个throw方法 这样,我就不会因为单个事件处理订阅者列表而使父类混乱不堪 我能看到的唯一问题是throw命令的参数,因为不同的事件会有不同的参数 我提出的解决方案是让throw方法接受一个对象数组,

我正在用Java重新实现一个.NETAPI,该API指定了一系列事件,EhichJava并不隐式支持

我将使用观察者模式,但由于事件的数量,我真的不想让界面变得混乱

我想知道声明一个“Event”类是否是一个好主意,该类有一个subscribe方法,该方法接受一个“EventHandler接口”和一个throw方法

这样,我就不会因为单个事件处理订阅者列表而使父类混乱不堪

我能看到的唯一问题是throw命令的参数,因为不同的事件会有不同的参数

我提出的解决方案是让throw方法接受一个对象数组,或者创建一个像IEvenTargetMnts这样的接口,它可以传递给throw命令并由订阅事件的代码处理,这对我来说似乎更有意义


如果有任何改进的建议,我将不胜感激。或任何改进。

Java有事件,也有对事件的API支持。查看
java.util
包。您将看到
java.util.EventListener
java.util.EventObject
和其他一些。还有用于维护订阅者等的支持类。例如,AWT和Swing API是基于事件的


通常,
addXxxListener(XxxListener l)
方法(即订阅方法)将出现在触发事件的类上,而不是事件类本身上。事件就是消息,它是从发布者向订阅者发送的消息。

为什么不使用JavaBeans事件模型呢?如果所有对象都在同一个JVM中运行,那么就可以了


对改进Java观察者模型有一些想法。也许你会发现这些方法很有帮助。

没错,如果你使用它,你不需要观察员。这也是我的建议。我创建一个单独事件类背后的逻辑是,维护订阅者和通知订阅者的逻辑可以扩展到事件类。我将查看您提到的类,看看它们是否满足我的需要。查看java.beans.PropertyChangeEvent、java.beans.PropertyChangeSupport和java.beans.PropertyChangeListener。如果所有内容都在一个JVM中,那么它们可能就是您所需要的全部内容。如果您将订阅者放入事件中,那么您最终会将订阅者列表传递给侦听器。一般来说,他们不使用这个。那里可能也有安全问题。类比:如果你是邮购零售商,你在哪里维护你的邮件列表?通常不在目录中……举一个安全问题的例子,假设“亲密成人服装”的供应商通过将其包含在产品目录中来管理其邮件列表。无论如何,安全问题不是关键问题。它将关注点分开。事件表示消息,而不是注册。