3

我最近尝试练习 DDD,我发现我自己正在转向许多领域模型对象,这些对象是纯数据结构,在领域模型中没有行为和大量服务,我想知道这是否是糟糕设计、影响的标志我的设计中的架构(实体框架)或使用错误的技术来开发这种应用程序,我认为这是一个 90% 的 CRUD 应用程序。

4

2 回答 2

4

领域服务的百分比并不是衡量领域模型质量的有用指标。

但是,如果您需要域模型, “没有行为的纯数据结构”是代码异味

现在,如果您的应用程序处理的业务非常复杂以至于您需要领域专家来理解它,那么您就需要一个领域模型。很少有应用程序需要 DDD(Evans 曾说过只有 5%),但它们通常是高预算的。这样的预算来自两个考虑:业务的高度复杂性和利益相关者从中获得的竞争优势

即使是整个项目中域类的百分比也不是一个有用的指标:例如,在 CQRS 应用程序中,您将拥有许多 DTO,但您仍然可以拥有一个接收命令的良好域模型。此外,拥有 90% 的 CRUD 应用程序很好,它在有界的操作上下文中需要域模型来强制执行复杂的业务不变量。

但是,如果您不需要领域专家,您可能不需要领域模型。

如果是这样,请记住流行语驱动的开发非常昂贵。如果你真的不需要它,你不
应该“尝试”使用 DDD 。

于 2013-04-16T07:55:48.960 回答
3

如果应用程序确实是 90% 的 CRUD,那么它没有富域。DDD 适用于富域,可能不适合该应用程序。正如第一条评论所指出的,您所拥有的是贫血域模型,它在 DDD 的上下文中被认为是一种反模式,但实际上对于大多数应用程序来说已经足够了。Eric Evans 在他的书中指出,大多数时候 DDD 是不必要的。

于 2013-04-15T22:27:08.777 回答