0

我有一个带有 GUI 的服务器应用程序。用c#写的。现在我想对整个应用程序使用 MVC 模式。

通常你有 1 个模型,1 个控制器,也许还有 n 个视图。好的,我拥有一切,但我不确定模型。

我的情况: 有 1 个服务器状态,可以在线/离线,有客户端计数等。这可能是我的“ServerModel”。我将通过我的网络库处理网络连接,并在连接时创建学生对象。这一切都发生在这里。如果有新学生,该视图将被注意到并为新学生显示一个 GUI 元素(通过控制器)。现在在我看来有一个与特殊学生相关的操作,控制器收到通知“StudentChanged”并获取已更改的学生。

问题: 控制器现在可以直接更改学生或告诉 ServerModel 如何更改学生。第二种方法乍一看似乎有些过头,但保持 MVC 设计清晰。我想直接从控制器更改学生。但我不确定这种违反 MVC(学生不是模型,而是模型的一部分)是否会给以后的开发或整个代码的灵活性带来任何缺点。

来自汉堡的问候;)

4

2 回答 2

1

控制器应该收集用户想要更改的关于学生的信息并将其交给视图。

您可能希望查看使用命令模式来捆绑更改学生所需的操作。

例如

  1. 用户在 UI 上执行他想要更改学生的操作
  2. UI 通知 View 用户想要通过界面更改学生。
  3. 视图执行 ChangeStudent CommandObject
  4. CommandObject 显示一个 Change Student UI,该 UI 在应用程序启动时由 UI 注册到 View。
  5. 用户与 Change Student UI 交互。用户完成后,该命令将检索信息。
  6. 该命令修改模型并关闭 ChangeStudent UI。
  7. 该命令通知视图它已完成。
  8. 视图告诉 UI 命令已完成。
  9. 用户界面更新。
于 2009-04-03T13:03:19.630 回答
0

经验法则:保持模型简单,让控制器完成它的工作。

于 2009-04-02T19:52:30.857 回答