在我的家庭项目中,我在确定域对象的类型时遇到了一个问题。
域:总线时间表
有限上下文:路由(公共交通基础设施,ctx1),时间表(调度,ctx2)
物体:
例如:一条总线25A有两条路线{st1、st3、st20}、{st20、st15、st3、st1}和两个附表(附表1-路线1,Sch2-r2)附加在这两条线路上。
毫无疑问,我把Line和City确定为DDD实体,聚合根。此外,我决定将路线放入线中,因为它们在线和它们的生命周期== Line的生命周期之外没有任何意义。看起来还是不错的。
下一步是定义调度域对象。我想把它从公共交通基础设施中分离出来,所以我把它作为一个实体放在另一个上下文中。问题是,现在我需要将它附加到没有标识符的路由中。
我的想法:
也许我做错了什么?
发布于 2016-07-28 07:40:20
我认为你需要更多地考虑如何使用你的域名。在你的例子中,你已经说过你有一条线,一条线有路线,一条线有时间表。
我还希望您能够询问路由问题(就像这条路线上的st77 )或操作(停止s99关闭2周)。这意味着路线是一个实体。也许你不再是价值对象了。
路线的总根将是一条公交线路,就像你说过的,你不能想象出一条路线之外的路线。这正是聚合根的含义。
此外,路由的标识符不必是有意义的名称,它可以有一些随机guid作为标识符。我的电脑是序列号。从来没有人真正谈论过那个序列号(我说的是x型戴尔),但当我订购它时,这是一个非常好的数字,可以识别和跟踪特定的计算机。
更新也是关于描述/建模您的问题。这是关于你的问题域的旅程。不要过于固定它的外观,而是发现它看起来是什么样子,尽管你想要解决的问题(与你的领域专家)。也许你会发现,路线和线路根本不重要,只是时间安排和停车。(如果你试图解决的问题是找出下一班公共汽车的时刻表,那么如果你是一家公共汽车公司,需要安排时间来开车的话,线路似乎就更重要了。)
https://stackoverflow.com/questions/38613059
复制相似问题