Model与ViewModel完全相同时该怎么办?

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

我觉得我应该重新创作。 只是想知道专家说的话……

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

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

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

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

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

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

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

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