DDD,移至垃圾箱,如何设计

时间:2015-11-16 11:58:44

标签: domain-driven-design ddd-repositories

我有一个简单的用例,用户可以discard profile。这很容易理解,但提出了一些建模问题。

1 /我的profile实体中有一个标志可以表明他在垃圾桶里吗?

我不这么认为。所以我希望有两个ProfileRepositoryTrashRepository

2 /所以给定这两个存储库,在我的应用程序服务中,我只需要从他的存储库中删除配置文件并将其添加到垃圾箱。似乎很自然,但如果我无法进行交易,可能会造成麻烦。 (但我的应用程序并非如此)。

但是,我使用关系数据库,第一个想法是使用列来指示行是否在垃圾桶中,并使两个存储库在同一个表上工作。我不确定这是个好主意。

我还可以向discard添加ProfileRepository方法,以便我不需要这两种方法。

哪种解决方案最好? 我可以设置一个标志来确定我的实体中的状态(丢弃),还是让两个不同的实体拥有不同的存储库更好?

1 个答案:

答案 0 :(得分:4)

Discard确实是一个业务命令,命令总是会改变域的状态。我相信,如果状态指示该配置文件已被丢弃,则完全有效。如果你真正想要的是discarded,那么引入deleted or active这样的属性是错误的。

然而,有些人认为有时候明确地模拟状态是有用的:有一个完全不同的类来表示丢弃的配置文件。

这里有一些与显式状态建模相关的链接:

http://codebetter.com/gregyoung/2010/03/09/state-pattern-misuse/ http://p2p.wrox.com/book-patterns-principles-practices-domain-driven-design/94718-ch16-explicit-state-modeling-identity-map.html https://medium.com/@martinezdelariva/explicit-state-modeling-f6e534c33508