Java:视图(GUI)和控制器与MVC的交互?

时间:2011-12-04 10:36:44

标签: java model-view-controller swing

如何最有效地连接MVC-esque Java应用程序中的视图和控制器。目前,我正在做以下事情:

  1. Controller创建视图并将其作为参数传递给视图:

    MyView view = new MyView(this);

  2. 查看按钮有ActionListener个。 ActionListener并没有做太多事情,只能在控制器中触发一个动作:

    private class ButtonAListener implements ActionListener
      {
    
          @Override
          public void actionPerformed(ActionEvent arg0) {
              controller.clickedButtonA();
          }
    
      }
    
  3. 工作正常,但这可以接受吗?例如,如果在视图中单击了一个按钮,ActionListener会将该信息传递给控制器​​,控制器会进行一些计算,并传回一个命令来更新视图。

1 个答案:

答案 0 :(得分:2)

恕我直言,这是可以接受的。我认为任何解决方案都可以,只要不发生紧耦合。根据您使用的GUI库(AWT,SWT,Swing ..),不同的类是合适的。顺便说一句。你应该检查适配器(如果你不知道它们):http://blogs.oracle.com/CoreJavaTechTips/entry/listeners_vs_adapters

我建议从控制器移动视图的创建。如果要分离视图和控制器(这就是整点),控制器应该只有一个setter方法(或其他依赖注入机制)。我认为你应该有一个启动器类来创建控制器和视图,然后将它们连接在一起。