我认为我了解MVC的基本概念 - 该模型包含应用程序的数据和行为,该视图负责将其显示给用户,并且控制器处理用户输入。我不确定的是什么进入控制器。

假设我有一个相当简单的应用程序(我特别想到Java,但我想在其他地方也适用相同的原则)。我将我的代码整理成3个包裹app.model,app.viewapp.controller

app.model软件包,我有几个类,可以反映应用程序的实际行为。这些extends Observable并使用setChanged()notifyObservers()触发视图在适当时进行更新。

app.view包有一个类(或几个用于不同类型显示的类),它使用javax.swing处理显示的组件。

那么我实际上在控制器中放入了什么?public void actionPerformed(ActionEvent e)在视图中只需调用控制器中的方法?

如果验证是在视图中完成的,那么我应该在控制器中放入什么?

抱歉问了这么长的问题,我只是想记录一下我对这个过程的理解,希望有人能为我澄清这个问题!

答案

在您建议的示例中,您是对的:界面中的"用户单击了’删除此项目’按钮"基本上应该只调用控制器的"删除"功能。

以对话形式:

View :“嘿,控制者,用户刚刚告诉我他想要删除第 4 项。”
Controller :“嗯,在检查了他的凭据后,他被允许这样做……嘿,模特,我希望你得到第 4 项,并尽你所能删除它。”
Model :“第 4 项…明白了。它已被删除。回到您这里,管理员。”
Controller :“在这里,我将收集新的一组数据。返回给您,查看。”
View:“酷,我现在向用户展示新的集合。”

在该部分的末尾,您有一个选择:视图可以发出单独的请求,“给我最新的数据集”,从而更加纯粹,或者控制器隐式返回带有"删除"的新数据集

来自: stackoverflow.com