在领域驱动设计中,领域服务应该包含自然不属于实体内部的操作。
我有为每个实体创建一个服务并在其中分组一些方法(Organization
实体和OrganizationService
服务)的习惯。
但我越想:OrganizationService
这并不意味着什么,“组织”不是一种服务,它是一个东西。
所以现在我必须添加一个组织深拷贝功能,它将复制整个组织聚合,所以我想把它放在一个服务中。
我应该这样做:OrganizationService::copyOrganization(o)
?
或者我应该这样做:OrganizationCopyService::copyOrganization(o)
?
更一般地说: “服务”是包含多个操作的抽象概念,还是服务是具体操作?
编辑:鉴于第一个例子不太好,更多例子:
StrategyService::apply()/cancel()
还是StrategyApplicationService::apply()/cancel()
?(此处的“应用程序”与应用程序层无关;)CarService::wash()
还是CarWashingService::wash()
?
在所有这些示例中,最具体的服务名称似乎是最合适的。毕竟,在现实生活中,“洗车服务”是有道理的。但我最终可能会得到很多服务......
*注意:这不是关于意见的问题!这是一个关于领域驱动设计方法的精确、可回答的问题。当问“我应该”时,我总是厌倦接近投票,但有一种DDD 做事方式。*