单独的Listener类与实现接口与Anonymous内部类相比?

时间:2014-03-31 16:22:19

标签: java listener

使用(方法1)单独的侦听器类(可能是内部类)的好处/缺点是什么:

private ClassAAL implements ActionListener
{
    ...
}
private ClassAWL implements WindowListener
{
    ...
}

与(方法2)实现接口

public class ClassA implements ActionListener, WindowListener

与(方法3)为需要监听器的每个元素使用Anonymous类设置监听器。

btn.addActionListener(new ActionListener()...);

问题:这些方法的优点和缺点是什么?是否有性能优势,或者推荐一种优于另一种的设计模式?还是其他任何好处?

我可以看到:

  1. 第一种方法是清洁
  2. 第二种方法更紧凑
  3. 第三种方法是在元素处添加侦听器代码。
  4. 注意:我在此看到了一个问题Nested class vs implements ActionListener;但大多数答案似乎都给出了人们使用的内容而不是每种方法的任何优点/缺点。

1 个答案:

答案 0 :(得分:1)

如果您希望您的侦听器更易于访问(API可用),那么我建议使用方法2.几年前我也停止使用私有类并使用public static嵌套类:

public class YourClass {

    public static YourNestedClass {
        //...
    }

}

除了您自己的实现之外,它们的初始化没有真正的性能差异。如果你制作了30个不同的侦听器对象,这些对象可以由一个共同的对象完成(如方法1/2),那么可能会有一些细微的差别。否则,你可以真正做你喜欢的事。