我知道mvvm要求拥有一个包装Model类的ViewModel类,但是我想知道为什么这样做更好,而不是直接通过partial类来增强Model类。我知道您可能希望从ORM自动生成模型,但您仍然可以通过部分类将ViewModel内容放在另一个文件中,这样做可以避免为每个模型维护ViewModel的相当大的开销。所以我想问题是:让模型具有面向UI的代码有什么不好,只要你在源代码中将它分开并且不适当地使用模型的UI方面?
答案 0 :(得分:2)
关键是分离关注点。您的ViewModel专为满足UI的需求而构建;这意味着它包含的数据是专门为UI设计的,而您的模型是直接为您的持久性或域逻辑格式化的。
在您的情况下,必要时更改模型需要对视图模型进行更改;分离时,每种都可以独立变化,从而减少意外的副作用。
答案 1 :(得分:0)
让模型具有面向UI的代码是如此糟糕,只要您在源代码中将其分开并且不适当地使用模型的UI方面?
如果您拥有一套完整的单元测试,并且愿意更新所有正在使用您的模型的位置,或者您可以保证您的数据库永远不会更改,那么
。答案 2 :(得分:0)
您无法真正“增强”您的模型而不是使用viewModel。理论上你可以,但这将是非常糟糕的代码。 只是一个简单的例子: 想象一下,你有一个只有2个字段的用户类:userName和password。此User类是您的模型。 但是在您的页面上,您要添加一个字段来编辑/添加数据:密码验证字段。 那么你要在你的User类中添加password2字段吗? 那很糟! 相反,您最好创建一个绑定到View的ViewModel,并根据ViewModel的数据,然后创建模型的实例并在其他层中处理它