2011-08-17 92 views
13

我想在我的命令行項目中獲得MVC。命令行中的MVC java

截至目前(無MVC,很明顯),我有:

  • MainClass(假名字明顯),使用菜單幾次焦躁它創建了一個系統對象
  • 菜單(由主要使用以提供選項)
  • 系統,它具有作爲屬性的Model,使用文件或鍵盤輸入創建,它使用Model中的數據執行簡單操作.calculate(valueA,valueB)其中valueA和valueB選擇使用模型屬性的菜單
  • 模型(親屬d)是我擁有的數據的容器。

有人可以請建議我一個適當的結構類嗎?

非常感謝, 盧克

+0

你是什麼意思?什麼MVC類庫?什麼樣的用戶界面? – bmargulies

+0

我的意思是模式ModelViewController –

+0

@Luke,這是一個設計模式或現有庫的暱稱。如果後者是什麼庫?如果前者,你的問題是荒謬的。 –

回答

14

我真的由消極反應感到驚訝到這個問題,因爲它是一個相當有趣的一個。我期望這是因爲大多數人認爲MVC在Web環境中只有任何意義,但MVC也完全適用於CLI程序。它只是呈現不同的視圖媒介。事實上,我認爲它是最高級的MVC設計,它能夠在不改變控制器和模型片的情況下插入CLI,GUI或Web「視圖」。

所有這一切MVC說的是,給定的應用程序,你抽象儘可能視圖部分 - 應用程序的演示文稿,內容與用戶看到和互動 - 從應用程序的真實,內在邏輯。你這樣做的方式是創建控制器,將視圖和任何控件「粘合」到後端邏輯中。簡而言之,控制器將用戶輸入轉換爲方法調用,並將返回值轉換回對用戶有用的東西。模式的模型部分有些爭議。有人說,每個發送給視圖以顯示的單獨的對象圖是a「模型」。其他人則認爲,後端的整個有狀態對象圖形是「模型」,而控制器形成一些鏡子,讓視圖挑選,檢查和修改模型的特定部分。問題在於是否有許多模型不斷地來回流動,或者是一個需要以用戶能夠理解的方式暴露的大型模型。

要在CLI或任何類型的應用程序中訪問MVC,必須將部分代碼明確定義爲視圖/演示文稿。它永遠不會有任何類似於商業邏輯的東西。您的控制器應該是知道如何響應用戶輸入的對象,並且可以將事情發回給用戶查看,儘管沒有任何關於如何顯示這些事情的假設或確切的輸入形式。這種模式,基本上是用戶關心的實際數據或「東西」,它應該忘記顯示它的視圖或控制器,而是控制它。