2017-04-16 68 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模式来解耦。

相关问题