我读过这方面的矛盾。
来自维基百科:
控制器 处理和响应事件,通常是用户操作,并可能调用模型上的更改。
通常令人困惑的是这个词。如果不只是用户输入,那么还有什么?
我读过这方面的矛盾。
来自维基百科:
控制器 处理和响应事件,通常是用户操作,并可能调用模型上的更改。
通常令人困惑的是这个词。如果不只是用户输入,那么还有什么?
我将控制器视为Coordinator,我的大部分代码通常在控制器中。这是大多数分支发生的地方。在视图或模型中,您的大部分代码都将自己处理(数据对象对视图对象一无所知)。然而,控制器将数据对象(模型)与视图对象匹配,因此我认为它是协调器。
一个通用的“测试”可以应用于他们的应用程序,看看他们是否足够遵循 MVC:重新设计你的应用程序是否很容易?(在不重写一大堆代码的情况下交换视图)。
不要陷入所有围绕 MVC 的宗教辩论和严格的“规则”中,仅遵循 80% 的 MVC“规则”即可赚钱的产品比尚未完成且过于复杂而无法实际使用的产品要好向右跑……
不,在经典模式中,控制器可以从任何来源获取输入。对于基于 Web 的 MVC 框架,例如 Ruby/Rails 或 ASP.NET MVC,控制器从查询和表单参数中获取输入。
有关 MVC 的更多信息,请访问http://en.wikipedia.org/wiki/Model-view-controller
编辑:当我说来自任何来源的输入时,我正在考虑可能具有 GUI 和其他输入源接口的应用程序,例如与控制器交互以更新模型的传感器子系统。
编辑:根据您的更新,如果游戏是多人网络游戏,控制器可以响应网络事件。这些将不会由用户输入设备的控制器处理。
控制器的职责是管理应用程序流。它处理请求,组合适当的模型/视图/帮助器,并可选择发出响应。
请求可以来自许多不同的来源,例如 Web 和本地服务、定时事件等等。
我称验证和清理视图的用户输入部分。
我将控制器称为背后的逻辑,即获取经过验证、清理过的数据并使用它的部分。这样您就可以编写一个充当视图的测试工具,为控制器提供数据并测试结果。
不,它应该用于模型和视图(UI 屏幕)之间的所有交互这包括从模型检索到的 UI 屏幕上的数据显示(更新屏幕),以及响应用户输入/交互用户界面屏幕...
它还可能包括由于该用户在 OTHER 屏幕上的操作或(在多用户并发系统中)其他用户对存储库(数据库)
不必要。控制器可以处理用户输入,更新您的模型,并可能决定直接返回 JSON 结果甚至动态生成的图像而不是视图页面。
控制器还可以决定页面流。用户单击您网站上的“我的帐户”链接但尚未登录,因此他们会被定向到登录页面。成功登录后,控制器可以决定是否通过 ReturnUrl 查询参数将它们重定向回“我的帐户”页面。
您也可以将验证逻辑放在您的控制器中,但我不建议将这种方法用于大型项目。该逻辑属于您的模型。