VMa< -Ma,VMb - > Ma ... Versus ... VMa< - VMb - >嘛

时间:2011-03-14 09:49:38

标签: .net wpf design-patterns mvvm

选项1:ViewModelA< - ModelA,ViewModelB - > MODELA
选项2:ViewModelA< - ViewModelB - > MODELA

* ModelA 通过 ViewModelB 更改其属性 ,因此在 Option2 中,它不需要实现任何告知viemodel中任何人已经改变的机制 * Option2 需要两个视图模型之间的消息传递解决方案,而 Option1 则不需要。

哪个更好, Option1 Option2

编辑:
我选择实现 Option2 ,因为我想让 ModelA 类成为一个简单的POCO。
我还将 ViewModelB 重命名为 ModelViewB

ASWER:
终于实施了......选项1。这里的诱惑是我可以保持 ModelA 简单(例如,不通知任何人)。但最终它使应用程序变得复杂,因为它与其他类的实现不同。最好保持并遵循一条规则(甚至可能有一些开销)。

messenger 类实际上是帮助类,而不是模式的核心成分,因此我保持解决方案更接近模式(正如下面提到的那些人)。

2 个答案:

答案 0 :(得分:2)

我总是选择第一个选项。

此选项是跟随MVVM的选项,也是生成更清晰,更易于理解的架构的选项。

答案 1 :(得分:1)

如果您没有将Mediator实现为MVVM结构(MVVM + M)的一部分。选项1将正常工作。如果您将调解器模式添加到您的结构中以供将来使用,那将是非常好的投入时间。

只要没有从视图中直接访问数据并且所有数据都是通过viewmodel访问的,可以获取或设置,那就没关系了。