【发布时间】:2011-07-14 21:32:03
【问题描述】:
选项1:ViewModelA ModelA
选项2:ViewModelA ModelA
*ModelA 通过ViewModelB仅改变它的属性,所以在Option2中它不需要实现任何通知视图模型中的任何人它已更改的机制。
*Option2 需要两个视图模型之间的消息传递解决方案,而 Option1 不需要。
Option1 还是 Option2 哪个更好?
编辑:
我选择实现 Option2,因为我想让 ModelA 类成为一个简单的 POCO。
我还将 ViewModelB 重命名为 ModelViewB。
回答:
终于实现了... Option1。这里的诱惑是我可以保持ModelA简单(例如不通知任何人)。但最终它使应用程序复杂化,因为它背离了其他类的实现。最好遵守一条规则(甚至可能有一些开销)。
messenger 类实际上是辅助类,而不是模式的核心成分,所以我使解决方案更接近模式(正如下面的人也提到的)。
【问题讨论】:
-
你能稍微解释一下你的场景吗?你有两个 GUI,一个会改变模型,另一个不会?
-
@jpsstavares 没错。两个 GUI 之一仅用于演示目的(实际上是在画布上绘制的一些形状)。
标签: .net wpf design-patterns mvvm