【发布时间】:2014-06-03 16:28:00
【问题描述】:
我的销售模块中有Order 和OrderType 类,OrderType 类用于一些分类目标并在Orders 上应用一些业务规则。每个类都有自己的表。
我想在我的项目中应用DDD 技术。
所以,我认为Order 是一个聚合根,但是OrderType 呢?
它是否也包含在Order 聚合中,还是值对象?
我认为这将是一个价值对象。
我说的对吗?
【问题讨论】:
-
不能简单地应用 DDD 的“技术”。 DDD 是关于正确建模域,而不是根据配方按下按钮。为什么订单是聚合根?哪个是有界上下文,OrderType 是 Order 的内在特征吗?域通过 OrderType 理解什么? DDD 真的不是关于选择/猜测实体和值对象。当我看到一对多关系时,我 99.99% 确定你没有做 DDD,你仍在使用 rdbms 思维方式,在建模领域时,这在 DDD 中没有位置。
-
@MikeSW:总结:1. Order 是聚合根,因为它负责Order 和OrderLines 的持久化2. 有界上下文是sale 3. 是的OrderType 是Order 的内在特征(一些值for OrderType:InternalOrder,ExportOrder,...) 4. 为什么你说“当我看到一对多...”?模型中的一对多关系是否与 DDD 原则不一致?
-
恐怕你都搞错了,聚合根与持久性无关,它与域概念有关。我建议您阅读有关 DDD 的更多信息,并仅使用“普通”OOP,直到您正确理解它为止。至少你不会被(错误的)假设为你在做 DDD。
标签: entity domain-driven-design value-objects domain-object