model-view-controller - 使用MVC,一个人应该如何处理 View 之间的通信?在模型之间?

标签 model-view-controller model view controller components

在实现MVC之前,我要寻求正确理解MVC的第三个问题:

我想到了两种情况:

  • 主要应用
    窗口需要启动
    首选项窗口。 (一个 View
    调用另一个 View 。)
  • 应用程序的主要模型
    需要访问一个属性
    在首选项模型中。 (一个模型
    访问其他模型。)

  • 这些问题是相关的,因为它们都涉及跨模型- View - Controller 三元组的通信,这在我的谷歌搜索中并未发现太多讨论。

    解决此问题的明显方法是将所有内容包装在顶级“应用程序”对象中,该对象处理模型之间的事务并允许Controller调用彼此的方法。我已经看到了这个实现,但是我不认为这是一个好主意。我还可以看到 Controller 观察多个模型并响应多个 View 的可能性,但这似乎变得非常困惑且难以遵循。

    关于如何最好地实现这种串扰的建议?我觉得这是一个非常明显的问题,但是我一直无法找到有据可查的解决方案。

    概括地说,如果任何人都有一个链接,显示了解决此类MVC问题的典型方法,我很乐意看到它。我没有太多运气能找到可靠的,不平凡的引用资料。 Python中的示例很可爱,但我会很乐意阅读任何内容。

    编辑1 :

    我看到下面说了一些非常有趣的事情,总的来说,我所描述的方法似乎没有问题。文森特描述的这几乎已经是FrontController设计的一种惰性形式。我当然不会预见到在实现该模式方面会出现任何问题,但是,似乎没有人真正解决过有关模型之间通信的问题。所有答案似乎都是针对单个模型中对象之间的通信。我对为应用程序的单独组件维护单独的模型更感兴趣,这样我就不会在单个Model类中填充五十个状态属性。我应该将它们维护为子模型吗?

    最佳答案

    关于(1), View 不会调用其他 View 。它们调用 Controller Action ,这可能导致呈现其他 View 。在您的情况下,主应用程序窗口包含一个用户界面元素(按钮,链接),该元素调用 Controller Action 以显示首选项窗口。

    关于(3),模型组件当然可以相互关联。这不是意外的,也不是必须避免的。例如,您的客户模型可能具有一组关联的订单。通过Customer类中的方法访问客户的订单是完全自然的。

    您可能需要查看Wikipedia上的MVC page以获得概述。

    关于model-view-controller - 使用MVC,一个人应该如何处理 View 之间的通信?在模型之间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/227919/

    相关文章:

    view - SpyOn 使用 jasmine 的主干 View 方法

    angularjs - Angular.js中的多个参数 'when'在路由期间调用

    javascript - Ext.ModelManager.getModel 已在 extjs 5 中弃用

    model - Yii2模型获取包含下划线的字段的方法

    django - 尝试删除相关对象时 FOREIGN KEY 约束失败

    Android:View 类是否适合图形元素?

    java - Android Studio 2.2.0.12 设计器自动在 View ID 之前添加 "@+id"前缀,这会导致此异常错误

    javascript - Internet Explorer 给出错误 : ')' is expected, 而 Firefox 却没有?

    ruby-on-rails - ruby on Rails 在 Controller 中使用 "create"方法,因为 GET 不起作用

    python - Django 将多个模型传递给模板