From 值对象如何存储在数据库中? https://stackoverflow.com/questions/679005/how-are-value-objects-stored-in-the-database/ :
假设公司和个人都有相同的邮件地址。
这些陈述中哪些被认为是有效的?
1.“如果我修改 Company.Address,我希望 Person.Address 自动获取这些更改”
2.“如果我修改Company.Address,它一定不会影响Person.Address”
如果 1 为 true,则地址应该是实体
如果 2 为真,则地址应该是值对象。
不应该在上述模型中发送邮件Address
be a 值对象,因为即使Company
and Person
有相同的邮件,该邮件仍然没有概念标识?
换句话说,如果最初Company
and Person
share [电子邮件受保护] /cdn-cgi/l/email-protection,但随后收到新邮件[电子邮件受保护] /cdn-cgi/l/email-protection,那么我们可以认为邮件地址[电子邮件受保护] /cdn-cgi/l/email-protection本身并没有改变,而是Company
and Person
替换为[电子邮件受保护] /cdn-cgi/l/email-protection ?
因此,据我了解,一个事实是Address
共享应该不足以赋予它个性(即身份)?!
谢谢
是的,你的理解是正确的。Address几乎应该总是一个值对象,因为在大多数域中,地址确实只是一个值。
事实是,一个Company and a Person有相同的Address今天并不意味着如果一个改变,另一个也应该改变。如果存在这种关系,则应通过显式约束对其进行建模,而不是通过Address一个实体。
埃里克·埃文斯 (Eric Evans) 在他的优秀著作中谈到了这一点领域驱动设计 https://rads.stackoverflow.com/amzn/click/com/0321125215甚至提供了一个具体的例子Address可能是一个实体——邮政服务,其域围绕地址展开,并且个人地址的身份很重要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)