我正在使用mvc设计模式用gui编写程序。我有一个关于使用ActionListeners的问题。
根据mvc模式,所有的actionlistener都应该包含在控制器中。通常,正如我所相信的,它们将被实现到内部类中。
但是,如果有许多按钮等,那么将这些内部类移动到同一个包中的不同文件中是一个好主意吗?我知道它们将不再是内部类,所以这是一个好的设计吗?由于我需要使用controller类中的局部变量,所以我可以简单地将它们设置为默认访问权限吗?
控制器类:

public class Controller{

    GoogleMaps gMaps = null; // model
    GUI gui = null;          // view

    public Controller(GoogleMaps gMaps, GUI gui) {
        super();
        this.gMaps = gMaps;
        this.gui = gui;

        this.gui.addButtonDownListener(new ButtonDownListener(this));
    }
}

ButtonDownLister类:
class ButtonDownListener implements ActionListener{

    private BudgetController buttonDownListener;

    public ButtonDownListener(BudgetController buttonDownListener) {
        super();
        this.buttonDownListener = buttonDownListener;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        // some ActionEvent handler
    }
}

最佳答案

可能不是完美的mvc,但是您仍然可以有内部类actionlistener,它们只调用实际执行工作的控制器。
因此// some ActionEvent handler仍然在控制器中完成。

08-03 12:12