首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DDD实体是否隐藏在DDD值对象中?

DDD实体是否隐藏在DDD值对象中?
EN

Stack Overflow用户
提问于 2016-07-27 12:31:01
回答 1查看 115关注 0票数 2

在我的家庭项目中,我在确定域对象的类型时遇到了一个问题。

域:总线时间表

有限上下文:路由(公共交通基础设施,ctx1),时间表(调度,ctx2)

物体:

  • 车站-描述一个公共汽车站
  • 路线(Ctx1)-一组车站(路线路线点)
  • 线路(ctx1) -描述总线线路。包含列表。
  • 进度表(Ctx2)-一组指定的从路线的路线点出发的航班。

例如:一条总线25A有两条路线{st1、st3、st20}、{st20、st15、st3、st1}和两个附表(附表1-路线1,Sch2-r2)附加在这两条线路上。

毫无疑问,我把LineCity确定为DDD实体,聚合根。此外,我决定将路线放入线中,因为它们在线和它们的生命周期== Line的生命周期之外没有任何意义。看起来还是不错的。

下一步是定义调度域对象。我想把它从公共交通基础设施中分离出来,所以我把它作为一个实体放在另一个上下文中。问题是,现在我需要将它附加到没有标识符的路由中。

我的想法:

  • 把时间安排在公路上。为什么它不是一个选项:行变胖;创建ctx1和ctx2的ubercontext
  • 使路由成为实体。为什么它不是一个选项(我认为.):虽然不难想象有某种标识符(例如名称)的路线,但仅仅想象一条公交线路之外的路线是不够的。

也许我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-28 07:40:20

我认为你需要更多地考虑如何使用你的域名。在你的例子中,你已经说过你有一条线,一条线有路线,一条线有时间表。

我还希望您能够询问路由问题(就像这条路线上的st77 )或操作(停止s99关闭2周)。这意味着路线是一个实体。也许你不再是价值对象了。

路线的总根将是一条公交线路,就像你说过的,你不能想象出一条路线之外的路线。这正是聚合根的含义。

此外,路由的标识符不必是有意义的名称,它可以有一些随机guid作为标识符。我的电脑是序列号。从来没有人真正谈论过那个序列号(我说的是x型戴尔),但当我订购它时,这是一个非常好的数字,可以识别和跟踪特定的计算机。

更新也是关于描述/建模您的问题。这是关于你的问题域的旅程。不要过于固定它的外观,而是发现它看起来是什么样子,尽管你想要解决的问题(与你的领域专家)。也许你会发现,路线和线路根本不重要,只是时间安排和停车。(如果你试图解决的问题是找出下一班公共汽车的时刻表,那么如果你是一家公共汽车公司,需要安排时间来开车的话,线路似乎就更重要了。)

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

https://stackoverflow.com/questions/38613059

复制
相关文章

相似问题

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