2017-04-16 29 views
-1

我現在有在我看來的方法,它創建一個從用戶輸入的對象,並將其返回到控制器,其中其稱爲:在MVC中可以在視圖中處理數據嗎?

//In view class 

myObject x = new myObject(); 
x.setAttribute1(TextField1.getText()); 
x.setAttribute3(TextField2.getText()); 
x.setAttribute3(TextField3.getText()); 
return x; 

這是否違反MVC中的條款?在控制器中創建對象並在視圖中使用getter方法來設置其屬性會更合適:

//In controller class 

myObject x = new myObject(); 
x.setAttribute1(myView.getTextField1().getText()); 
x.setAttribute2(myView.getTextField2().getText()); 
x.setAttribute3(myView.getTextField3().getText()); 
... 
+0

我認爲把「生成」代碼放在視圖中是不對的。也許一個Builder類可以幫助你更多 – Sysix

回答

0

是的,這是錯誤的。

主要問題,絕對不行,是在視圖中創建模型。控制器創建模型,模型可以創建相關模型,但視圖絕對不會。

視圖顯示模型。這就是他們所做的,沒有別的,沒有別的。視圖也不會將用戶輸入寫入模型,它們會以任何格式將控制器的用戶輸入返回給控制器,從而決定要執行什麼操作。

如果您處於更經典的基於形式的GUI中,即不是Web應用程序,則視圖仍然不會直接操作模型。使用Observer模式來解耦。

相關問題