2

我们终于建立了一个领域模型。域模型包括用于将域对象松散耦合到持久性的接口。然而,我想知道域模型对象应该如何相互耦合。

Order指向Customer还是ICustomer ?

这篇文章提到了积极解耦对象的问题,并且似乎不鼓励“过度使用 [接口]”。但是,除非我可以模拟它们所依赖的其他实体,否则我看不到如何真正对我的域实体进行单元测试,这需要松散耦合。

我也不确定想要一个可以交换部分的域模型有多现实。

4

3 回答 3

1

当协作者:

1) 有一套全面的单元测试,清楚地说明它的行为。

2) 不难安排。

3) 不利用外部资源(或违反任何这些相关准则)。

我们一直使用框架类(例如,DateTimestring)来执行此操作——除非聚合的子级异常复杂,否则您也应该能够信任它。

于 2011-03-29T00:59:54.690 回答
0

在做 DDD 时,您不想“真正解耦实体”。您应该首先将域模型划分为应该解耦的聚合。在 Aggregates 内部不需要模拟任何东西,因为 Aggregate 应该被视为单元测试的“单元”。

此外,将尽可能多的行为转移到值对象将帮助您使域模型可测试,因为值对象(根据定义,它们是不可变的)非常容易测试。

于 2011-03-29T07:51:14.293 回答
0

域模型包括用于将域对象松散耦合到持久性的接口。

持久性会保留您的对象。它知道您的对象以便持久保存它们。将持久性与模型解耦不会给您任何东西。域中的任何更改都必须反映在持久层中,

在进行 DDD 时,您需要与领域专家一起识别普遍存在的语言,然后您将其用代码表示。我还没有看到领域专家提到界面。通过识别领域中的正确概念来解耦模型中的 AR。您可能为某些域服务定义了接口,但请确保它们是您域中的真正服务提供者,而不是您错过的某些概念。

我也不确定想要一个可以交换部分的域模型有多现实。

你是对的,这不现实。您可能会为某个服务提供商交换实现,但 AR 中的实体?我不这么认为。

于 2011-03-28T23:19:58.993 回答