在MVC中,处理事件代码应放在控制器或视图中?

时间:2011-11-18 11:40:08

标签: model-view-controller events event-handling

如果用户按下按钮,处理此事件应该放在控制器或事件上?谢谢。

1 个答案:

答案 0 :(得分:2)

这实际上取决于您正在使用的平台,因为与桌面开发存在巨大差异(例如.NET的WinForms / WPF或Java的Swing与ASP.NET和Java Servlets或PHP)。

在桌面编程中,事件系统很容易(有时甚至是自然的,取决于你如何看待它)在事件本身做很多工作,但最终你会发现自己编写了大量的程序的逻辑在那里,使你的观点一团糟。在Web编程中,这很难做到,因为您无法真正处理浏览器中的大部分系统逻辑(您无法打开与数据库的连接,您无法访问会话或任何其他类型的信息以前没有由服务器提供)。

此外,由于请求和响应的工作方式,在We​​b开发中应用MVC要容易得多。另一方面,当编程到桌面时,一切都在你需要的地方,你可以轻松地从任何地方访问任何控件,即使你没有,你会认​​为它是可以的(即使它不是)分享的东西使用静态变量(或许多单例)。

总而言之,我要说你应尽一切努力在事件中恢复逻辑程序。通过一些练习,您会发现将逻辑委托给常规对象而不是视图本身将使您的生活更轻松。

及时:你使用的那种控制器也很重要。例如,ASP.NET使用某种类型的页面控制器,而许多PHP和Java框架更适合使用FrontController(当然,这不是一个规则,但可以改变你看到的东西)。

相关问题