对于一个按钮的事件(简单事件)的两种写法:
写法1:class ButtonAction extends ActionListener{
    MainFrame mainFrame;    public ButtonAction(MainFrame mainFrame){
        this.mainFrame = mainFrame;
    }
    void actionPerformed(ActionEvent e){
        mainFrame.doAction();
    }
}
写法2:public class MainClass {
    public MainClass {
        button.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                doAction();
            }
        })
    }
}
请教这两种写法在效率,可读性上等各个方面的差异???(代码简写了,doAction是事件处理函数)

解决方案 »

  1.   

    效率基本没差多少,可读性也没差多少,都很清晰。
    第二种使用惹名内部类的方式,代码量比较少,如果只有一个button需要添加event用这种就可以。
    如果有多个button需要添加,那就用第一种,方便调用。
      

  2.   

    就LZ这两段代码,效率和可读性都差别不大.
    该说的LS都说了,匿名类适用于比较独立的处理,因为匿名类没法重用.
      

  3.   

    这样如何:public class MainClass implements ActionListener{
        public void actionPerformed(ActionEvent e){
            doAction(e.getActionCommand());  
        }    private void doAction(String action){ //以action作为参数, 以使菜单和button可以共享事件的响应处理
            //...
        }
    }