假设我有一个我想以多种方式显示的数据集。可能是电子表格和条形图。两个视图中模型中的数据相同。显然,观点必须不同。
但是,创建包含相同模型的不同视图模型更有意义,每个模型都处理特定于每个视图的功能,或者是否有一个以多种方式公开模型的视图模型?
如果每个视图模型中90%的功能相同,相应视图中的差异略有不同,该怎么办?
视图模型是否更多地耦合到视图或模型?
答案 0 :(得分:3)
我不确定是否可以给你一个是/否答案。
这实际上取决于你的目标。
我认为创建不同的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)
{
}
}
如果您愿意,此方法可帮助您分隔某些特定于View的属性。
另请注意,在开始向其中一个视图添加新功能后,您必须向ViewModel添加新代码。因此,您将获得一个ViewModel,它具有许多特定于网格的代码作为特定图表。这将违反Single Responsibility Principle
所以我的观点是你可以使用任何这些方法