DDD:"国家"应该是价值对象还是实体?

UpT*_*eek 9 oop domain-driven-design

'country':DDD中的价值对象或实体?

意见无论如何欣赏.

并且,在哪里存储国家/地区名称/代码表?D B?XML?在课堂上?

谢谢!

Jas*_*rue 17

如果您的域名是地理的或政治的,那么它可能是一个实体,但在一般情况下,一个国家/地区只是与地址等内容相关联的值.在这种情况下,在对象模型的上下文中,它只是一个值.

至于存储,域模型并不真正关心.如果方便,您可以使用数据库,如果您愿意,可以使用XML,如果您有与国家/地区关联的行为,则可以使用类.


Mik*_*ott 13

实体的一个特征是它具有生命周期,即它随时间而变化.值对象不会.实际上,值对象应该是不可变的.因此,问自己的问题是,"国家的目标是否会随着时间而改变?"

区分实体和值对象的另一个方面是具有相同属性的两个值对象是相同的.因此,如果您有一个名为"France"的国家/地区实例,则它与名为"France"的另一个国家/地区实例相同,即使它们是两个不同的实例(假设这是国家/地区的唯一属性)讨论).想想大多数语言中的字符串,字符串"fubar"等于字符串"fubar"的另一个实例.

另一方面,实体即使具有相同的属性也是不同的.一个名为"John Smith"的客户可能与名为"John Smith"的另一个客户不同.

因此,鉴于这些特点,您应该能够做出决定.由于只有一个"法国"并且它不会随着时间而改变,它可能是一个有价值的对象 - 除非您的应用需要跟踪更多关于可能随时间变化的国家/地区.

  • 法国已经是5.0版本:http://en.wikipedia.org/wiki/French_Fifth_Republic;) (9认同)