说我想根据是否存在特定实体来采取不同的操作,例如:
item := itemRepository.Find(id)
if item != nil {
item.Description = newItem.Description
... // More actions
itemRepository.Save(item)
} else {
... // More actions
itemRepository.Save(newItem)
}
我相信这段代码应该属于应用程序服务或域服务,但不能真正确定哪一个是正确的。有什么建议吗?
答案 0 :(得分:0)
两者都不是。依赖于域状态的逻辑属于域模型。
item = items.Find(id)
item.doTheCleverThing(newItem)
items.Save(item)
这里的分支逻辑属于存储库。
Find (Id id) {
state = database.Fetch(id)
if (null == state) {
return factory.defaultItemWithId(id)
} else {
return factory.item(state)
}
}
免责声明:通过阅读Evans中的原始文本,不是很明显。他关于生命周期的章节确实不能很好地解释创建方式,并且他对存储库的描述也很薄。