选项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 类实际上是帮助类,而不是模式的核心成分,因此我保持解决方案更接近模式(正如下面提到的那些人)。
答案 0 :(得分:2)
我总是选择第一个选项。
此选项是跟随MVVM的选项,也是生成更清晰,更易于理解的架构的选项。
答案 1 :(得分:1)
如果您没有将Mediator
实现为MVVM结构(MVVM + M)的一部分。选项1将正常工作。如果您将调解器模式添加到您的结构中以供将来使用,那将是非常好的投入时间。
只要没有从视图中直接访问数据并且所有数据都是通过viewmodel访问的,可以获取或设置,那就没关系了。