我正在重新实现Java中的.Net API,并且API指定了一大堆事件,而java并没有暗中支持。
我将使用观察者模式,但由于事件的数量,我真的不想让界面混乱。
我想知道声明一个“Event”类是否是一个好主意,它有一个订阅方法,它接受一个“EventHandler接口”和一个throw方法。
这样我就不会因为个别事件处理它们而使我的父类混乱不已。[/ p>
我能看到的唯一问题是使用throw命令的参数,因为不同的事件会有不同的参数。
我提出的解决方案是让throw方法接受一个对象数组,或者创建一个像IEventArguemnts这样的接口,它可以传递给throw命令并由订阅该事件的代码处理,这似乎对我更有意义。
我很感激有任何改进建议。或任何改进。
答案 0 :(得分:2)
Java有事件,也有事件的API支持。查看java.util
包。您会看到java.util.EventListener
,java.util.EventObject
和其他一些人。还有用于维护订户等的支持类。例如,AWT和Swing API是基于事件的。
通常,addXxxListener(XxxListener l)
方法(即订阅方法)将在触发事件的类上进行,而不是在事件类本身上进行。事件是消息,它是从发布者到订阅者的内容。
答案 1 :(得分:0)
为什么不直接使用JavaBeans事件模型?如果所有对象都在同一个JVM中运行,那么它将正常工作。
Peter Coad对改进Java Observer模型有一些想法。也许你会发现这些有用。