首页
学习
活动
专区
圈层
工具
发布

DDD航班
EN

Software Engineering用户
提问于 2018-10-05 01:04:12
回答 1查看 752关注 0票数 3

我对DDD相当陌生,并且一直在为飞行模拟器构建一个虚拟航空应用程序,而且我很难为应用程序的调度部分建模。

一些域名细节:首先你开办一家航空公司,然后用你的钱买飞机。然后你安排航班,飞他们并赚钱。在日程安排上的任何冲突,无论是双重预定的飞行员或飞机将不会被阻止,但将显示给用户,以使他们解决冲突。如果飞机预定在A机场,当从B机场起飞的航班在同一架飞机上进行时,你必须在某一时刻加上一次从A到B的航班,才能使其有效。

所以我的问题是我将如何对日程安排进行建模。我认为调度应该是一个聚合根,类似于ScheduleWeek或ScheduleMonth,但是接下来我遇到了一个问题,如果预定的航班持续两周怎么办?一周后开始,下周开始后结束。

我有几个想法,第一个是我复制它,所以航班将在两个时间表周内,但我想我需要一个传奇,当一个用户想改变航班的时间,因为我需要确保两个时间表都更新。

我的另一个想法是,也许我应该把它建模为一个移动的时间框架,例如允许未来3个月的航班排定,并在它们过期后归档定期航班,但这感觉对我来说可能是反模式的,因为航班必须取消。(我使用的是事件源,所以它们不会被完全删除)

如果有人觉得我还没有很好地解释这个领域或我的想法,我很乐意详细说明任何事情。也完全愿意接受,我可能已经建模完全错误,有一个更好的模型,我正在考虑的。

谢谢

EN

回答 1

Software Engineering用户

发布于 2018-10-05 06:39:48

对于这些数据建模问题,我总是回到真理的源头,一直坚持到它被证明是不可行的(过度规范化等原因导致的不行为)。

在这种情况下,假设你在为现实世界建模,真相的来源是:

任何给定的飞行都有一个开始和结束日期,一个飞机分配(例如N12345A或其他标识符),一个飞行员(可能是来自另一个表的ID ),以及您的游戏/sim所要求的其他任何东西。

这些记录代表了实际的飞行,无论是正在进行中的还是计划中的未来.

这与您想要添加到sim中的任何计划系统都是分开的。例如,您可能有一个功能,允许您在每日的基础上,使用任何可用飞机等预订JFK和LAX之间的航班。然后,完成此表单将生成未来的时间表条目,直到某个最大日期。

然后,您可以在游戏中决定是否要解决资源可用性问题,或者在每个“一天”开始时解决。

但关键是,您的实际计划,以及生成该计划的机制是不同的,有不同的数据模型。

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

https://softwareengineering.stackexchange.com/questions/379465

复制
相关文章

相似问题

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