当前位置: 代码迷 >> J2SE >> 百分请问关于event监听器的有关问题
  详细解决方案

百分请问关于event监听器的有关问题

热度:14   发布时间:2016-04-24 00:45:23.0
百分请教关于event监听器的问题
对于一个按钮的事件(简单事件)的两种写法:
写法1:
Java code
class ButtonAction extends ActionListener{    MainFrame mainFrame;    public ButtonAction(MainFrame mainFrame){        this.mainFrame = mainFrame;    }    void actionPerformed(ActionEvent e){        mainFrame.doAction();    }}


写法2:
Java code
public class MainClass {    public MainClass {        button.addActionListener(new ActionListener(){            public void actionPerformed(ActionEvent e){                doAction();            }        })    }}


请教这两种写法在效率,可读性上等各个方面的差异???(代码简写了,doAction是事件处理函数)

------解决方案--------------------
性能没有多大影响。放心

可读性当然第一种好了

如果时间处理简单的话,我习惯使用第二种。
第二种的优点是写法简单,可以使用外部的变量和方法。
缺点就是代码无法复用。

------解决方案--------------------
效率上并没有区别。


第二种方式是采用匿名类的方法,可读性最差,适用于非常简单的事件处理。

第一种方式合并了主类和事件处理类,较为常用,适用于整个程序并不太复杂的情况;且事件处理函数可以很容易的访问主类的各成员变量;所以很常见。

如果程序较为复杂,那么事件处理需要抽出来单独定义一个处理类,这样才不会让主类的代码过于冗长,影响阅读理解。
------解决方案--------------------
效率基本没差多少,可读性也没差多少,都很清晰。
第二种使用惹名内部类的方式,代码量比较少,如果只有一个button需要添加event用这种就可以。
如果有多个button需要添加,那就用第一种,方便调用。
------解决方案--------------------
就LZ这两段代码,效率和可读性都差别不大.
该说的LS都说了,匿名类适用于比较独立的处理,因为匿名类没法重用.
  相关解决方案