ViewModel 类可以从 Model 类派生吗? MVVM

问题描述 投票:0回答:1

使用 MVVM 模式开发 WPF 应用程序:ViewModel 和模型接口/抽象类困境

目前,我正在开发一个遵循 MVVM(模型-视图-视图模型)模式的 WPF 应用程序。该应用程序已经包含一些视图代码,这些代码通过为各种模型类实现 DataTemplate 来呈现用户界面。为了确保适当的关注点分离并防止视图直接了解模型,我决定在 ViewModel 中为这些模型类创建包装类。

但是,我现在面临着有关 ViewModel 类的实现的设计决策。具体来说,我需要确定 ViewModel 是否应该是一个全新的类,或者它是否应该实现模型中的现有接口或抽象类。

主要问题:

如果我选择在 ViewModel 中实现模型中的接口或抽象类,这是否意味着视图对模型有一定程度的了解?这种方法是否符合 MVVM 模式的原则,或者是否违反了关注点分离?

补充问题:

为了封装 ViewModel 中的一些逻辑,我正在考虑在 ViewModel 中使用一个构造函数,它接受 Model 类的实例并标记为内部访问。这种设计选择会影响我的代码的可测试性吗?如果使用此类内部构造函数,如何确保我的 ViewModel 保持可测试性?

c# wpf design-patterns mvvm
1个回答
0
投票

据我所知,ViewModel 的要点是不直接使用模型,以免错误地将不必要的数据暴露给应用程序的不同部分。如果您的 ViewModel 以某种方式从模型派生,这意味着它的所有属性都暴露给 ViewModel,这违背了目的。

我正在考虑 ViewModel 中的构造函数,它接受 Model 类的实例并标记为内部访问。这种设计选择会影响我的代码的可测试性吗?

为此,可以使用将 Model 映射到 ViewModel 的构造函数,因为 ViewModel 包含一些 Models 属性。我怀疑它会在很大程度上影响可测试性,但在测试过程中需要记住这一点。

© www.soinside.com 2019 - 2024. All rights reserved.