【问题标题】:MVVM - view displaying information about multiple modelsMVVM - 查看显示有关多个模型的信息
【发布时间】:2014-08-29 01:03:45
【问题描述】:

注意:问题是关于服务器端 Web MVC

在 MVVM(C) 设计中,每个 View 都访问其 ViewModel。 ViewModel 就像是 Model 的桥梁,还包含 View 的状态。

我可以通过一个简单的示例轻松理解这一点,例如列出用户的视图:您将拥有一个使用 UserViewModel 的 UserView,而后者又是视图的 UserModel 的抽象。

现在想象一个网页,它在同一个页面上显示有关用户、产品和订单的信息。还有一个总结元素数量的字符串:“24 个用户,8 个产品,210 个订单”。

在上述情况下,ViewModel 如何只坚持一个模型(假设您有 UserModel、ProductModel、OrderModel),因为视图需要显示所有三个模型的信息?

一个 ViewModel 是否应该包含多个 Model 并在 ViewModel 和 Model 之间具有 1:n 链接?
一个 ViewModel 是否应该包含其他 ViewModel 并在 ViewModel 和 Model 之间保持 1:1 链接?

似乎 framweorks 像 e.g. ZF2 (php) 将视图模型嵌套到主视图模型中: http://framework.zend.com/manual/2.0/en/modules/zend.view.quick-start.html#zend-view-quick-start-usage-nesting

PS:这个问题是关于服务器端 Web MVC(相对于 javascript 客户端 MVC)而不是特定于任何编程语言(尽管我使用的是 PHP,所以任何与 c# 相关的东西,如绑定、wpf 或其他 .net组件将难以掌握)。

【问题讨论】:

    标签: design-patterns model-view-controller mvvm


    【解决方案1】:

    它不取决于一个类是否充当 ViewModel。有一些面向对象的原则需要多个组件之间的低耦合。简而言之,一个类应该只有一个职责,并且它应该知道最少的其他组件。因此,当一个 ViewModel 包含其他 ViewModel 时是可以的。 ViewModel 是一个常见的组件,除了它与 View 相关。

    【讨论】:

      【解决方案2】:

      一个 ViewModel 是否应该包含多个 Model 并在 ViewModel 和 Model 之间具有 1:n 链接? ViewModel 是否应该包含其他 ViewModel 以保持 ViewModel 和 Model 之间的 1:1 链接?

      一个 ViewModel 可以包含多个模型。 ViewModel 可以包含其他 ViewModel,但不一定要保持 ViewModel 和 Model 之间的 1:1 链接。可以参考PresentationModel

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-29
        • 1970-01-01
        • 2010-11-17
        • 2011-01-11
        • 2017-10-21
        • 2011-10-17
        • 2019-09-25
        • 2011-05-07
        相关资源
        最近更新 更多