繁体   English   中英

多事件监听器和适配器

[英]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) {

    }
}

但是我对一件事有些困惑。 我想编写尽可能干净的代码并使用模式。 所以我想知道下一个最优雅的方法是什么。 我的班级有我的听众作为字段。 我有四个可能发生的事件。 那么触发事件的正确方法是什么。 我有一些想法,但不知道哪个更好。

  1. 仅创建一个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); } } 
    1. 使用不同类型的fireEvent方法:fireAddEvent,fireDelete event .......并据此还调用不同的侦听器方法。

    2. 为每种类型的侦听器创建单独的数组。 并且也使用特殊的fireEvent方法。

我不知道会有什么更好和好的做法。 请提出其他实施方案或之前列出的最佳方案。 提前致谢

我会考虑使用4种不同的射击方法。 从方法参数更改行为对我来说不是很干净。

只是让您的类具有添加/删除侦听器方法(从某种集合中添加/删除那些侦听器)。 然后有4种触发方法(每种事件一种,会在您的听众调用正确方法的同时循环),我认为生活应该还不错。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM