这是一个来自新手的相当愚蠢但非常有效的问题。 上下文:我的“域对象”有一个名称(以及其他一些属性,但它们并不重要)。此名称是根据数据库中定义的某些模式生成的。 现在......谁应该确定域对象的名称?域对象应该确定它自己的名称(请注意这个“名称”可以基于它自己或其他对象的属性),或者服务是否应该根据模式确定名称然后调用类似
的内容domainObject.setName(theActualName)
我倾向于遵循“服务”方法,但另一方面,似乎这个任务应该是特定于对象的行为。
非常感谢您的回复。
答案 0 :(得分:1)
我认为你应该看看Tell Don't Ask Principle
如果object包含计算其名称所需的所有数据,我会将此方法放在该类上。如果这个数据基于其他对象的属性,而父类也包含这个包含数据的子对象,我会再次放置父类。
保持简单。如果我真的不需要,我不会介绍服务类。在DDD术语中,您应该将域相关逻辑放在域类中。
答案 1 :(得分:1)
这是一个包含逻辑的域对象?如果是,我宁愿给它一个DAO的引用,让它自己决定它的名字。通过这种方式,您的逻辑将靠近您的数据。
答案 2 :(得分:1)
有几个问题涉及到这个问题:
如果域对象无论如何都要绑定到数据库,并且如果不需要集中管理名称,那么我认为拥有域对象名称本身会导致更大的object cohesion。