2013-07-08 37 views
-1

我很困惑MVC如何與GUI swing應用程序一起工作。我曾與PHP MVC,但是完全不同。我明白MVC代表什麼。但讓我困惑的是在GUI swing編程中做不同的變化。很難從網絡上的不同文章中得出具體結論。誰應該知道誰?我的意思是模型視圖和控制器之間的關係是什麼?控制器是否應該知道模型和視圖?我想舉一個簡單的例子,如果可能的話來說明這一點(就像更新標籤一樣簡單的按鈕)MVC with swing implementation java

如果我不問更多我想獲得MVC書的sugetions這是書寫Swing的想法。

+0

這是一種廣泛的問題也類似的問題已經被問過這個網站。你有沒有搜索過它們? –

+0

是的,我幾乎完成了所有這些。但我迷路了。很難總結任何事情。不同的來源推薦不同的方式模型視圖和控制器如何使用數據。就像我正在讀控制器的某個地方會調解模型和視圖。我閱讀視圖的地方可以看到模型並更新自己。我很困惑 – varuog

+0

我想看一個簡單的例子,只是一個按鈕和標籤,將保持適當的MVC模式。從開始就可以掌握它。因爲我已經告訴過我已經過了頭。 – varuog

回答

2

如果你問10個不同的人「MVC是什麼意思?」你可能會得到10個不同的答案。我個人偏愛這定義MVC(至少對於非web應用):

Model-View-Controller Design Pattern

基本上,控制器用作唯一的功能是作爲應用程序啓動時實例化模型和視圖和將它們連接到另一個。其他一切都是恰當地將程序的數據和邏輯(模型)與您選擇顯示給用戶並允許用戶交互(查看)的方式分離。

0

對於Java有很多不同的MVC解釋。我會盡量提供一個基本的解釋,但正如我所說,其他人可能會對此持不同意見。

理論上MVC的「純」的解釋涉及以下內容:

  • 型號不知道視圖
  • 視圖不知道模型
  • 控制器連接模型和視圖以這樣的方式它將模型中的數據提供給視圖,處理視圖或模型中的「事件」,並根據視圖中發生的情況相應地更新模型。它也可以處理視圖中的事件,並將結果提供給視圖,例如計算器。

這裏是一個可能的/簡單的例子:

這個假設的應用程序的目標是獲得一個字符串的模式,得到它的GUI(視圖),允許用戶更改字符串,並更新模型中的上述字符串值。這個例子或多或少地儘可能地分離。

型號:

  • 包含變量字符串

查看:

  • 顯示字符串變量。
  • 獲取允許更改字符串的用戶輸入。

控制器(所述 '膠'):

  • 偵聽經由用於字符串定製偵聽到模型。
  • 將此字符串提供給用戶看到的視圖
  • 通過自定義偵聽器來偵聽視圖以供用戶更改字符串。
  • 採用此新字符串並將其提供給模型,更新原始字符串。

MVC背後的關鍵之一是觀察者模式理論。

雖然使用維基百科需要一定的風險,但它通常能很好地傳達MVC背後的基礎知識。 http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

以下是關於「純粹」實施和解釋來源的討論鏈接。 http://www.youtube.com/watch?v=ACOHAR7PIp4

下面是一個類似的MVC解釋的一個很好的解釋和它背後的理論的鏈接: http://www.youtube.com/watch?v=CVxt79kK3Mk