MVC +这种1:n关系的模式

时间:2009-04-02 19:47:19

标签: c# model-view-controller design-patterns model controller

我有一个带GUI的Server应用程序。用c#编写。 现在我想将MVC模式用于整个Application。

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

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

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

来自汉堡的问候;)

2 个答案:

答案 0 :(得分:1)

Controller应收集用户想要更改的有关学生的信息,并将其移交给View。

您可能希望使用command pattern捆绑更改学生所需的操作。

例如

  1. 用户在他想要更改学生的UI上执行操作
  2. 用户界面通知View 用户想通过改变学生 界面。
  3. View执行ChangeStudent CommandObject
  4. CommandObject显示应用程序启动时已通过UI向View注册的Change Student UI。
  5. 用户与更改进行交互 学生UI。当用户完成时 该命令检索信息。
  6. 该命令修改模型和 关闭ChangeStudent UI。
  7. 该命令通知View it is 完成。
  8. 视图告诉UI命令是 完成。
  9. 用户界面更新。

答案 1 :(得分:0)

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