[英]Multiple event listener and adapter
我正在为Tree创建我的自定义事件侦听器。 我在这里创建了一个侦听器界面
public interface TreeActionListener extends EventListener {
public void onAddNode(TreeEventObject eventObject);
public void onRemoveNode(TreeEventObject eventObject);
public void onRenameNode(TreeEventObject eventObject);
public void onCreateNode(TreeEventObject eventObject);
}
我还创建了名为TreeEventObject的自定义事件对象,这是代码
public class TreeEventObject extends EventObject {
private Object dataToPass =null;
/**
* Constructs a prototypical Event.
*
* @param source The object on which the Event initially occurred.
* @throws IllegalArgumentException if source is null.
*/
public TreeEventObject(Object source, Object dataToPass) {
super(source);
this.dataToPass = dataToPass;
}
public Object getPassedData() {
return this.dataToPass;
}
}
并且正如在jdk中提到的模式适配器被广泛使用。 当我在侦听器界面中有很多方法时使用它,但是我只需要一种方法。 所以我创建了我的适配器
public class TreeActionAdapter implements TreeActionListener {
@Override
public void onAddNode(TreeEventObject eventObject) {
}
@Override
public void onRemoveNode(TreeEventObject eventObject) {
}
@Override
public void onRenameNode(TreeEventObject eventObject) {
}
@Override
public void onCreateNode(TreeEventObject eventObject) {
}
}
但是我对一件事有些困惑。 我想编写尽可能干净的代码并使用模式。 所以我想知道下一个最优雅的方法是什么。 我的班级有我的听众作为字段。 我有四个可能发生的事件。 那么触发事件的正确方法是什么。 我有一些想法,但不知道哪个更好。
仅创建一个fireEvent方法,该方法应检查已执行的事件类型。 在其他情况下,如果。 如果要这样做,我应该在事件对象中创建枚举并创建字段类型,然后在构造函数中创建字段类型以进行设置,并稍后在fireEvent方法中进行检查。 并根据类型调用从侦听器列表中使用不同的方法。 例如 :
if(event.type==NODE_ADD) { for (TreeActionListener listener: listeners) { listener.onAddNode(event); } }else if(event.type==NODE_DELETE) { for (TreeActionListener listener: listeners) { listener.onDeleteNode(event); } }
使用不同类型的fireEvent方法:fireAddEvent,fireDelete event .......并据此还调用不同的侦听器方法。
为每种类型的侦听器创建单独的数组。 并且也使用特殊的fireEvent方法。
我不知道会有什么更好和好的做法。 请提出其他实施方案或之前列出的最佳方案。 提前致谢
我会考虑使用4种不同的射击方法。 从方法参数更改行为对我来说不是很干净。
只是让您的类具有添加/删除侦听器方法(从某种集合中添加/删除那些侦听器)。 然后有4种触发方法(每种事件一种,会在您的听众调用正确方法的同时循环),我认为生活应该还不错。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.