【问题标题】:Aggregate objects and boundaries聚合对象和边界
【发布时间】:2012-10-26 12:51:42
【问题描述】:

我对聚合对象感到困惑,并且只有聚合对象才有存储库,因为我不知道如何正确编码。

假设您有一个User、Question 和QuestionLog 实体。我不明白如何设置应该在聚合对象中放入多少的界限。你可以说没有用户就没有问题会存在于我的系统中,如果没有问题要附加,问题日志就不会存在。那么用户会是聚合根吗?

例如,您将如何添加问题日志?
对我来说,你最终似乎有很多嵌套等。User.addQuestionLog?我不明白当它应该是一个聚合并被视为一个单元时,边界在哪里?对我来说,User 是一个聚合体,Question 是另一个聚合体会更自然。但是我不明白如何真正知道这一点。

一个问题也可以有类别,这个类别是否也是问题的一部分?为什么/为什么不?如何发现它们?

【问题讨论】:

    标签: java jakarta-ee domain-driven-design


    【解决方案1】:

    不要去想对象,DDD 是关于现实生活的。

    真正的问题是:

    • 如果没有 Y,X 可以存在吗?
    • Y 是 X 的一部分吗?

    因此:

    • 用户可以在没有问题的情况下存在吗? 是的
    • 如果用户退出,该问题是否仍然可用? 是的
    • 日志是用户的一部分吗? 没有
    • 日志是问题的一部分吗? 否(因为它属于用户,但不属于用户)
    • 类别是问题的一部分吗? 通常是

    所以我们最终得到三个根聚合。

    类别是值对象

    【讨论】:

    • 但是问题日志不会成为问题的一部分,因为它包含有关该特定问题等问题的信息吗?能否请您提供更多示例和说明?
    • 您列出的两个问题是否与我的特定领域中的概念有关?
    • 我如何知道您的域是如何工作的或者它有什么限制?这只是您如何思考的示例。
    • 我有点不同意类别部分。一个问题属于(被放入)一个类别,充其量一个问题有标签(它被标记)。当然,OP 对“类别”的理解很重要,只有根据该定义,我们才能准确地说出类别是否确实是一个值对象。
    猜你喜欢
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    相关资源
    最近更新 更多