我只想为小型项目添加它,只需拥有自己的 ViewModel 并使用它就可以了。您可以稍后在需要时将实体分开。
许多开发人员在不权衡利弊的情况下添加新层,后来他们开始注意到滞后,然后产生怀疑。MVC 本身已经是一个关注点分离。
拥有一个单独的 DomainEntity 解决了一个不同的问题,即 UI 不再将 1 对 1 映射到实体,请考虑以下问题。
Version 1
Domain | Presentation
--------------------------------
User.FirstName | User.Name
User.LastName |
User.PositionTitle | User.PositionTitle
该示例演示了域和表示不再是一对一的映射。将来,您可能会进行域修改,例如:
Version 2
Domain | Presentation
--------------------------------
User.FirstName | User.Name
User.LastName |
Position.Title | User.PositionTitle
根据上面的示例(版本 2),请注意演示文稿没有被修改。具有分离的域模型提高了界面稳定性。它甚至可以降低重构场景的更改成本。
ViewModel 的优势
ViewModel 的美妙之处在于它将您的领域与演示文稿分离,这种好处在用于大型项目时更为明显,其中不同的开发人员处理系统的不同部分(例如单独的 GUI 团队)
一个小的改变需要改变许多类。
这是解耦实体的缺点之一,它会产生代码重复。额外的编码需要付出巨大的代价,而且好处必须是显而易见的才值得。