2011-12-04 87 views
2

如何在MVC類型的Java應用程序中最有效地連接視圖和控制器。目前,我執行以下操作:Java:查看(GUI)和控制器與MVC的交互?

  1. 控制器創建視圖和本身通入視圖作爲一個參數:

    MyView的視圖=新MyView的(本);

  2. 查看有ActionListener S代表按鈕。 ActionListener沒有做太多,但在控制器觸發一個動作:

    private class ButtonAListener implements ActionListener 
        { 
    
         @Override 
         public void actionPerformed(ActionEvent arg0) { 
          controller.clickedButtonA(); 
         } 
    
        } 
    

它工作正常,但是這是可以接受的?例如,如果在視圖中單擊按鈕,則ActionListener會將該信息傳遞到控制器中,該控制器執行一些計算,並傳回一條命令以更新視圖。

回答

2

恕我直言,這是可以接受的。我認爲任何解決方案都可以,只要沒有緊密耦合發生。取決於你正在使用的GUI庫(AWT,SWT,Swing ..)不同的類是適當的。順便說一句。你應該檢查出的適配器(如果你不知道他們已經):http://blogs.oracle.com/CoreJavaTechTips/entry/listeners_vs_adapters

我建議從控制器移動的視圖的創建。如果視圖和控制器要分開(並且這是整點),那麼控制器應該只有一個setter方法(或其他依賴注入機制)。我認爲你應該有一個啓動器類來創建控制器和視圖,然後將它們連接在一起。

+0

感謝您的回覆。 – Derek

+0

沒問題。 MVC中的主要內容是將演示文稿與業務邏輯和域分開。這真的不是一個小問題,因爲許多文章都是關於它的。您可以在Martin Fowler的「重構」中找到一些內容。 – emesx