域是否应基于聚合(每个聚合1个模块)进行模块化?

时间:2014-01-06 19:34:25

标签: oop design-patterns module domain-driven-design

认为“MODULE结构和名称经常反映模型的早期形式 比班级“。 关于域模块化的最佳实践是什么?

例如:汽车发动机和发动机和汽车客户的简单领域。

聚合1:引擎;

聚合2:汽车用以下物体包含轮子,位置,轮胎;

汇总3:客户;

域应该根据聚合根进行模块化吗?也就是说,汽车模块包含具有工厂存储库等的共同聚合,客户模块和共同聚合等。

还是应该根据其他一些因素进行模块化?如果是的话,将聚合对象分散到不同的模块中是一件好事吗?

有关进一步说明,以下是我对MikeSW评论的回应:

知道域可能会及时发展,应该在域中实现一些敏捷思想。这导致模块化。关于敏捷开发的工作原理我也不熟悉DDD。但我知道模块化应该遵循一些模式(这是我的表达“最佳实践”来自)。

对于初学者而言,目前尚不清楚聚合是否真的应该代表用户故事中的一章(当然可能)。但有些情况下却没有。所以在这种情况下,模块应该包含聚合或整个聚合的部分(为了域名)

1 个答案:

答案 0 :(得分:1)

构建正确的域模块的一些基本规则:

  • 模块应包含一个或多个聚合(聚合对象不应在多个模块上进行编辑);
  • 模块应该具有高内聚力和低耦合(如果没有,则更好)到其他模块。尽量让它们彼此独立;
  • 将任何事件,工厂,存储库,服务放在包含它们所绑定的聚合的模块中;
  • 模块应该反映域的关注点,命名应该反映泛在语言。
  • 如果某些模块是耦合的,请尝试使依赖性为aciclic;
  • 基于具有高内聚性的聚合构建模块,并基于它们的使用环境。
  • 如果可能存在中到高度耦合的模块,请创建父模块并将其放入其中。

所以我的最终答案是否定的,模块不应该基于聚合构建(每个模块1个AR)。但是基于域概念并基于使用耦合聚合的上下文。

如果您认为我的答案无效(对于downvoters):),请添加评论。还在等待更好的指针。如果没有提交其他答案,我将接受此答案。