首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免贫血域模型?

如何避免贫血域模型?
EN

Stack Overflow用户
提问于 2011-11-01 20:12:43
回答 3查看 608关注 0票数 1

我正在努力学习领域驱动设计的例子,我需要你的建议。假设我有一个叫Tender的实体。我从外部服务接收Soap消息;该消息包含有关招标的所有信息(tenderId、tenderSum、.)

我要做的是:

  1. 使用Service接收消息并将消息放入消息队列-由服务完成
  2. 从队列中撤回消息-由服务完成
  3. 转到数据库,通过tenderId检索投标对象,或创建由Repository完成的新招标
  4. 用来自域对象投标者完成的消息的值填充投标对象的字段
  5. 将招标保存到数据库-由Repository完成

我试着用正确的方式做这件事,但最后我发现,大多数代码都存在于服务、存储库等中,我真的很困惑。我做错什么了?我应该在域对象中做所有这些事情吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-02 09:15:38

DDD中的某些实体/值对象很少有行为,这并不少见。我几乎可以肯定,在任何项目中,至少会有一些实体/VOs,它们只有一些构造逻辑,并且是不可变的。这些并不是DDD主要关注的问题。

您应该专注于识别和(重新)定义有界的上下文和集合。你会在网上找到很多关于这方面的信息( 学步社区是一个很好的起点,但我强烈建议你至少多看几次从Evans、Udi Dahan和Greg可以找到的视频)。

不要太担心--不管你有多好,要想把它做好,需要几次失败:)

票数 3
EN

Stack Overflow用户

发布于 2011-11-01 21:17:12

我发现,随着模型的发展,服务中的一切都会随着时间的推移而发生变化。在您的示例中,一个选项可能是拥有一个名为Tender.LoadValuesFrom[ServiceName](val1, val1, etc)的实体的方法成员(提供的服务名称在域中有意义)。

这样,至少要让实体负责加载自己的值。有时,奇怪的服务会显得贫血。如果它到处都发生,或者感觉很尴尬,那么它很可能是想告诉你什么。否则我不会过分强调这件事。

票数 2
EN

Stack Overflow用户

发布于 2011-11-02 11:21:59

我想你不是唯一有这种想法的人。在我的模型中,通常的结果是验证、聚合管理,而且我还试图将大量精力放在值对象上。尽量减少汽车的特性,邀请你快速发展而不去想.不久前我在博客上写了一篇文章.http://magnusbackeus.wordpress.com/2011/05/31/preventing-anemic-domain-model-where-is-my-model-behaviour/

但这是一个迭代的工作,找到正确的模型。准备做很多重构..。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7972308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档