具有许多ActionListeners的MVC模式

时间:2013-12-16 20:22:19

标签: java swing model-view-controller

我正在使用MVC设计模式编写GUI程序。我有一个关于使用ActionListeners的问题。

根据MVC模式,所有ActionListener都应包含在Controller中。通常情况下,我认为它们将被实现为内部类,如。

然而,如果有许多按钮等,将这些内部类移动到同一个包中的单独文件是个好主意吗?我知道他们不再是内班了,所以这是一个好的设计吗?因为我需要使用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
    }
}

1 个答案:

答案 0 :(得分:1)

可能不是完美的MVC,但你仍然可以拥有内部类ActionListener,只调用实际执行工作的控制器。

所以// some ActionEvent handler仍在控制器中完成。