使用域驱动设计的非常基本的评论系统

时间:2014-07-28 14:58:17

标签: design-patterns domain-driven-design

我不想让这个问题过于宽泛,但对于DDD,没有简单的问题。

为了学习DDD,我试图为传统的博客系统制作评论系统。

在下面的屏幕中显示了我到目前为止的情况(它不是全部,但我不想让它太模糊)。 enter image description here

Image URL (original size)

正如您所看到的,只有一个"评论系统"的上下文。为了使它与我的博客应用程序一起工作,我必须制作ACL(反腐败层)。

我对此几乎没有任何问题。

  1. 这些对象中哪一个应该是聚合?我想这不是一个PostComment,所以也许我应该发布一个聚合并将其所有评论关联在那里?
  2. 如果我想获取用户的头像图片路径,那就是存储在旧版数据库中,用于我收到的每一条评论" getPostComments"服务,我该怎么办?对每个用户进行单独查询?
  3. 制作单独的User和Post实体是不同情境的良好实践吗?
  4. 在存储库实现中,我必须从行数据构建PostComment实体,我应该在域层中为它创建工厂吗?那个工厂只会用在那个实现中,所以我不确定。
  5. 我创建了一个PostComment实体,而不仅仅是一个评论,因为稍后我将不得不添加不同类型的评论,如BlogComment或CommentReply。

    提前致谢(顺便说一句,我读过埃文斯先生的书)。

1 个答案:

答案 0 :(得分:0)

由于还没有人回答这个问题,我已经找到了解决方案,我会在这里发布。

  1. 事实证明,PostComment是一个聚合,因为我需要检索一个PostComment(例如提高评级)。
  2. 要获取作者发表评论的数据,我们需要创建另一个聚合,表示评论的作者(UL)。这意味着我们还需要该AR的存储库。
  3. 现在我可以说:绝对是的。
  4. 我在存储库实现中使用工厂。