决定是否将模型或存储库/服务传递给我的视图模型?

时间:2010-08-05 05:20:49

标签: mvvm

我经常反对这个决定,而且我经常不知道采取什么方法。

许多MVVM示例都将模型传递给视图模型的构造函数。因此,每个VM都耦合到一个Model。检索模型和创建VM的逻辑在VM“某处”之外。模型必须知道如何坚持改变。

另一种选择是将某种上下文,服务或存储库传递给VM,VM决定它需要什么型号。这意味着VM具有更长的使用寿命,可以重复使用以显示许多不同的模型。 VM将使用提供的服务提交对模型的更改。

有没有人提出任何规则来制定给定方案的最佳方法?

1 个答案:

答案 0 :(得分:1)

ViewModel通常被定义为模型上的视图,即它存在于模型和视图之间进行调解。虽然完全可能拥有足够通用的ViewModel来调解多个Model类型,但实际上反之亦然,单个Model类型可能存在多个ViewModel,特别是在需要渲染单个Model的情况下在应用程序的不同部分以不同的方式。

此外,我通常将Model视为一个简单的数据对象,并在一个单独的服务中实现检索和持久性逻辑,该服务可以使用依赖注入传递。话虽如此,如果更好地适应您的场景,将持久性逻辑直接构建到模型中是没有错的。不过,我更喜欢将该层拆分出来,以便通过模拟更容易进行测试。