假设我有一个要以多种方式显示的数据集。也许作为电子表格和条形图。对于两个视图,模型中的数据是相同的。显然,观点必须不同。
但是,创建包装相同模型的不同视图模型更有意义,每个视图模型处理特定于每个视图的功能,还是拥有一个以多种方式公开模型的视图模型更有意义?
如果每个视图模型中 90% 的功能是相同的,而相应视图的差异略有不同怎么办?
视图模型与视图或模型更耦合?
假设我有一个要以多种方式显示的数据集。也许作为电子表格和条形图。对于两个视图,模型中的数据是相同的。显然,观点必须不同。
但是,创建包装相同模型的不同视图模型更有意义,每个视图模型处理特定于每个视图的功能,还是拥有一个以多种方式公开模型的视图模型更有意义?
如果每个视图模型中 90% 的功能是相同的,而相应视图的差异略有不同怎么办?
视图模型与视图或模型更耦合?
我不确定是否可以给你一个是/否的答案。
这真的取决于你的目标。
我认为创建不同的ViewModels
. 如果有 90% 的通用功能并且您不想将其保留在一个中ViewModel
- 只需使用继承:
public class ParentViewModel: BaseViewModel
{
protected readonly Model _model;
public ParentViewModel(Model model)
{
_model = model;
}
}
public class ExtendedViewModel
{
public ExtendedViewModel(Model model): base(model)
{
}
}
如果需要,此方法将帮助您分离某些特定于视图的属性。
还要记住,在您开始向其中一个视图添加新功能后,您必须向视图模型添加新代码。结果,您将获得一个 ViewModel,其中包含许多特定于网格的代码作为特定于图表的代码。这将违反单一责任原则
所以我的观点是你可以使用这些方法中的任何一种