3

我想知道什么是最佳实践。我被告知要始终创建 ViewModel,并且永远不要使用核心 Model 类将数据传递给 View。那讲得通。让我把事情分开。但是什么是 Model 和 ViewModel 完全一样。我应该重新创建另一个类还是只使用它。

我觉得我应该重新创作。只想知道专家怎么说。。

4

3 回答 3

5

您绝对应该创建一个单独的视图模型,即使它与您的域实体相同。视图模型和域实体应该是完全独立的,即您应该能够更改其中一个,而另一个不需要知道或关心更改。您的视图模型应该代表您的视图,并且您的域实体应该......嗯......代表您的域实体。它们现在可能是相同的,但如果其中任何一个发生变化,其中一个的变化不应影响另一个。

如果你的领域模型突然改变并且现在有与你的视图模型不再相关的字段怎么办?如果它们不是分开的,那你就有问题了。或者,更糟糕(并且可能更有可能),如果您的视图模型突然需要来自完全不同实体的更多信息怎么办?您是否打算使用这些完全不相关的信息来破坏域模型中的类封装,只是为了使其在您的视图中可访问?

让您的解决方案保持解耦和灵活。使用视图模型。

于 2013-05-28T07:00:46.450 回答
4

顺便说一句,我建议创建一个 ModelView。因此,在这种特殊情况下,它会是相同的,它将像 UI 和模型之间的“桥梁”一样工作,数据在其上传输。

但这对可扩展性有好处,因为你很可能想为你的视图模型添加一些特定的 UI,所以它会越来越远离模型本身。

所以一般建议:顺便创建它,即使现在它们是相同的,因为它可以帮助您在以后需要它时进行扩展。

于 2013-05-28T07:00:01.817 回答
2

但是什么是 Model 和 ViewModel 完全一样。我应该重新创建另一个类还是只使用它。

如果它完全一样,你当然不需要视图模型。但这是一种非常罕见的情况。

于 2013-05-28T06:59:44.453 回答