主事件循环应该在哪里?模型、视图、控制器?或者甚至可能从外面,主要是?或者在另一个封装 MVC 的类中?
怎么对?
upd:回复为什么在 MVC 中需要它的评论:我需要它是因为我个人不明白一般情况下如何在 MVC 和 GUI 应用程序中组织逻辑。以我的理解,代码中的某处应该有一些类似的东西
while(true) {
while(app.EventHappened()) {
if (app.LastEvent() == App::Event::Click()) {
doSomeLogic();
}
}
app.display();
}
无论如何,我相信这至少在 MVC 中是可能的。问题是 - 将它推到哪里,以便从架构的角度来看它是正确的。
这取决于很多因素,没有规定的标准。
例如,如果您的 MVC 模式实现了一个 Web 应用程序,那么 UI(及其内部循环)在用户的浏览器中运行,来自浏览器的请求很可能在服务器的线程池中得到处理。
如果你有一个普通的桌面应用程序,那么是的,经典框架需要一个单一的“主”循环,UI 和大部分控制器在其中运行。在这种情况下,模型组件很可能有自己的消息循环。
因为 MVC 模式不需要消息循环,所以它不强制要求找到一个。在这种情况下,主循环通常会启动最先启动的组件(View 或 Controller)。但在我看来,一种更简洁的方法是将运行主循环的代码视为应用程序的一个单独部分,而不是严格意义上的 V 或 C 的一部分。无论如何,请随心所欲。