我需要实现类来支持能够根据事件类型传递不同类型/数量的数据的自定义事件。例如,
使用事件类型 AI 需要传递 2 个字符串名称。使用事件类型 BI 需要传递 3 个字符串名称和一个双精度。
我发现的 2 个设计:
EventObject 的扩展,包含所有可能数据的字段和方法(某些事件类型不需要的字段留空)。
// event constructors public MyEvent(Object source, int type, String a, String b) {} public MyEvent(Object source, int type, String a, String b, String c, double d) {}
EventObject 的扩展,包含 EventInfo 对象的参数。EventInfo 是更改信息的基类。触发特定事件的方法将传递 EventInfo 的子类,其中包含必要的更改信息(侦听器需要向下转换)。
// event constructors public MyEvent(Object source, int type, EventInfo info) {} // base class for event info public class EventInfo {}
有哪些其他设计可以实现这一点?各自的优缺点是什么?
谢谢。