使用域驱动设计方法推理/建模业务逻辑

时间:2016-06-24 21:40:21

标签: domain-driven-design

我想要实现的目标是开发一个实现DDD方法的应用程序。

这个故事可能听起来很傻,但这是一个真实的现实问题。相信我。

业务如下:

  • 我们假设一家公司专门生产糖果,这些糖果会分发到自己的商店出售。
  • 工匠根据什么是 - 什么不是 - 制作不同类型的糖果,目前在公司的一家商店展出。
  • 当一种味道的一篮子消失时,'卖家用商店储藏柜取代这种甜味剂。
  • 显示器上的复制品不应该存在,并且显示器应该填充容量允许的数量或制造商可以处理的数量。
  • 根据需求,糖果从制造商的实验室存储分发到商店。

假设每个工作人员都有对显示器和存储柜的公共视图访问权限。每个工人(用户)决定自己提供什么。商店展示视图将通过应用程序公开访问潜在客户,作为当前正在销售的信息。

到目前为止,我已将业务逻辑拆分为三个独立的(子?)域:

  • 生产
  • 分发
  • 出售

当然,像Sweets,Storage,Craftsman,它的存储库等每个实体都分别放在他们的域中。

我所关注的问题是:

  • 实体(Sweet)从一个域传递到另一个域是否合适?
  • 提供商是否应该能够访问一个域的StorageCabinet并将其内容传递给另一个域?

我的推理是否正确?如果我错了或违反任何DDD规则,请纠正我。

提前致谢。

1 个答案:

答案 0 :(得分:1)

  

这个故事可能听起来很傻,但这是一个真实的现实问题。

实际上这很棒。在他最近的retrospective中,Greg Young提到的一件事是“购物车”模型作为教学工具真的很糟糕。他简要地指出有趣的问题在供应链中。

  

实体(Sweet)从一个域传递到另一个域是否合适?

不,但描述实体状态的消息(DTO)可能会从一个域传递到另一个域。

您希望保持在每个域中以不同方式定义实体的灵活性;这是识别有界背景的一部分。

  

提供商是否能够访问一个域的StorageCabinet并将其内容传递给另一个域?

可能不是:您的域模型不是存储柜的记录簿。请仔细聆听格雷格对one way commands的评论。