2010-11-04 57 views
1

那么,在MVVM模式中,两个模型不应该彼此认识或交谈是一种好的做法。这意味着您不应该在其他模型中创建一个模型的对象,然后注册事件或执行类似的事情。为什么两个模型不应该与每个其他模型对话

但是为什么如果两个模型互相了解会出现什么问题。我正在编写代码,如果我的模型都相互认识,会发生什么。

+0

我认为这对于松耦合不好! – cordellcp3 2010-11-04 09:43:32

回答

2

视图模型彼此互操作通常是非常合适的。毕竟,视图中的父/子关系涉及父视图模型,该模型持有子视图模型的集合。在任何情况下,例如,父视图中命令的可用性取决于其子级的状态。有时候把它委托给一个单独的控制器类是适当的,但这样做通常也不值得。

这真的取决于您的应用程序的整体复杂性。有时候这种努力是必不可少的。有时它只是镀金。

+0

当然,只要你不把对象分离出去,你不能自动对它们进行测试(这是MVVM首要的原因)。干杯 – 2010-11-05 09:20:49

+0

一个人如何看待模型与另一个渲染器互操作,无论哪一个都无法测试? – 2010-11-05 14:46:55

4

如果你要规避MVVM在你想有一个很好的理由任何方式(否则你可能也只是把它写传统的代码隐藏和节省一些打字):)

使用MVVM有几个好处,主要用于非常松散的耦合,单元测试和重用。

松耦合的基本原理是这样的:

  • 的视角知道如何显示一定形状的数据,但不知道那里的数据从何而来。
  • ViewModel提供了一定形状的数据和设置,视图可以使用,但不知道谁在显示它。
  • A Model知道如何保存通用数据,但不知道谁在使用它
  • 控制器(大多数MVVM解释中缺少)决定要获取哪些数据,要显示哪些数据以及在哪里显示它。这是决策所属的地方。

如果你需要你的ViewModels相互了解,那么你很可能会缺少一个Controller对象来管理你的2个ViewModel和相关的Models/Views。

如果您可以提供更多关于模型目前链接的信息,我可能会提出一个替代方案。

相关问题