【问题标题】:MVC + Which pattern for this 1:n relationshipMVC + 这种 1:n 关系的模式
【发布时间】:2009-04-02 19:47:19
【问题描述】:

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

通常你有 1 个模型、1 个控制器和 n 个视图。好的,我什么都有,但我不确定模型。

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

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

来自汉堡的问候 ;)

【问题讨论】:

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


    【解决方案1】:

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

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

    例如

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-08
        • 1970-01-01
        相关资源
        最近更新 更多