C# 模型类(MVVM)的接口和抽象类

C# 模型类(MVVM)的接口和抽象类,c#,mvvm,C#,Mvvm,根据我在学校看到的情况,模型类应该只包含数据成员/属性,而不包含方法/行为。 然而,在设计UML类图时,我看到了模型类可能的接口和抽象类。所以我的问题是: 如果MVVM建议不要使用模型类中的方法,那么为模型设计抽象类/接口是一个好主意吗?我所看到的是,如果模型中没有方法,那么在这种情况下,我们永远无法从为模型提供接口和抽象类的好处中获益 在模型视图视图model design中,大多数特定于领域的逻辑和行为实际上都在模型中结束。这被称为领域驱动设计中的领域模型 该域代码可以在您的业务中的多个部

根据我在学校看到的情况,模型类应该只包含数据成员/属性,而不包含方法/行为。 然而,在设计UML类图时,我看到了模型类可能的接口和抽象类。所以我的问题是:

  • 如果MVVM建议不要使用模型类中的方法,那么为模型设计抽象类/接口是一个好主意吗?我所看到的是,如果模型中没有方法,那么在这种情况下,我们永远无法从为模型提供接口和抽象类的好处中获益

在模型视图视图model design中,大多数特定于领域的逻辑和行为实际上都在模型中结束。这被称为领域驱动设计中的领域模型

该域代码可以在您的业务中的多个部署单元/应用程序/服务中重用,因此它们独立于您正在编写的实际WPF应用程序

viewmodel充当您刚刚编写的视图的可测试的特定于应用程序的适配器和中介,以便

  • 域不会被所有应用程序都不需要的行为所污染
  • 域没有被与给定屏幕或UI(表示状态)相关的状态(字段、属性)污染
  • 该视图不包含要进行单元测试的行为

模型可以有方法。如果它是模型领域的一部分,那没关系。“模型课程不应该有方法”背后的原因是什么?我不知道学校教你什么“没有行为模型是好的”模因(尽管你不是唯一这样做的人)。请阅读,看看为什么这个想法对你没有多大帮助。感谢所有这些答案,这对我帮助很大。@维吉:谢谢你的链接和解释。晶莹剔透。