DDD如何处理删除逻辑

在使用ddd时发现,不知道该如何实现 删除 操作,因为在标准 ddd 的设计中,repository 中只有 save、load 两个方法,难道我们要用 save 方法来执行 删除操作?

在 udidahan 的一篇文章中指出:”不要删除“,
而是搞清楚客户为什么需要”删除“操作,而后面的评论中,建议使用归档/存档来代替”删除“。

个人看法,以现状而言,大可不必过度考虑ddd中是否应该存在删除操作,因为大家对删除操作已经有了共识,
删除操作属于业务中的一部分,或者我们将删除看做订单的另一种状态:”已删除状态”(逻辑删除),
所以大胆的使用”delete“吧。

更多删除场景

对于一个电商系统来说,用户有:

  1. 在移动端删除订单的操作,但仍可以在PC端看到该订单;
  2. 在PC端删除的操作;
  3. 客户删除了订单,但是商家仍可以看到订单;
  4. 商家删除了订单,运营仍可以看到订单;

以上删除操作,我们可以为其命名为:user_delete、seller_delete,在数据库中,用 user_deleted、seller_deleted 标记删除。

参考

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注