在域驱动设计中,具有标识的对象是实体是众所周知的。例如,任何人都会有几种形式的身份(姓名等)。实体/值对象选择
但是值对象是没有身份的对象。一个共同的价值对象是地址,但是地址没有身份。但是在数据库层,我们可以有一个组合键。这个概念是否适用于DDD?通过道路名称,邮政编码和门号(省略城镇等信息)的组合可以识别地址。金钱会成为另一个价值对象。
的区别似乎是在没有单一的识别字段和值对象的对象往往不是实际属于实体。例如,“我”(用我的名字取代)可能穿鞋等,但“我”不是鞋子,衬衫等(http://www.lostechies.com/blogs/joe_ocampo/archive/2007/04/23/a-discussion-on-domain-driven-design-value-objects.aspx)。
这是要考虑的事情以正确的方式?另外,借助这种心态/方法,我可以将它应用于C#中的值/引用类型选择。尽管我可能会采用DDD方法吗?
感谢
实体/值对象的区别可以用C#类和结构之间的选择有所帮助。我确信有可能导致异常的考虑因素(在其他情况下选择相反的类型,关于对象的所有其他事实使其适用于一种类型)。但是,可以修改地址(建筑物)。这不应该是可变的吗?一个引擎可能是一个结构体和一个较小物体的组合,但它也可以被修改。 – dotnetdev 2009-04-27 21:59:31