2013-02-28 96 views
2

我目前在阅读Applying Domain-Driven Design with Examples in C# and .NET。我有一个关于域模型的初始草图了两个问题:参考人员课程令我困惑

  1. 我不是以英语为母语,所以什么“参考人”意味着什么在商业领域还是在英语中一般?
  2. 作者对草图进行了评论,尽管“参考人员”类出现在图上的两个不同的聚合中,但在运行时他们是同一个实例,这怎么可能?如果一个聚合根是垃圾收集不会导致收集该实例,从而使另一个聚合不稳定?

回答

2

在这里,我文章中,我们谈论的图片:

enter image description here

  1. 一位顾客有时是一个组织,而不是一个个体,它可能有ReferencePersons,您可以联系列表。我们可以说参考人是代表一个组织的人。 (Aggregate 1)

    当客户想下订单时,我们也需要确切地知道我们正在与之交谈的人。 (Aggregate 2)

  2. 您应该仔细阅读,作者在书中评论说:“类ReferencePerson在图4-13中的两个不同的聚合中,但实例不是”。这意味着当您从数据库同时加载订单和客户时,Order.ReferencePerson和Customer.ReferencePersons [index]不会指向内存中的同一个对象,即使它们是同一个人。

此外,即使它们指向相同的实例,也会在没有对它们进行引用时收集.Net对象。如果集合1被收集,但集合2仍然引用ReferencePerson A,则尚未收集A.

+0

+1发布图片(我真的应该做到这一点)。关于第二个答案,请您提供进一步的解释,关于删除客户的例子,您可以说什么不会导致所有参考人员都离开,现在订单会指向一个空引用? – 2013-03-01 17:08:45

+1

@Sniffer:我更新了答案 – phnkha 2013-03-02 03:22:15

+0

这就是让我困惑的原因,因为我更喜欢将它们看作是由两个聚合体共享的单个实例,否则我们将如何处理冲突(参考人员在一个聚合体中进行了更改,但没有在另一个中,尽管他们是同一个人)? – 2013-03-02 14:59:38