对于一个按钮的事件(简单事件)的两种写法:
写法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都说了,匿名类适用于比较独立的处理,因为匿名类没法重用.