我对DDD相当陌生,并且一直在为飞行模拟器构建一个虚拟航空应用程序,而且我很难为应用程序的调度部分建模。
一些域名细节:首先你开办一家航空公司,然后用你的钱买飞机。然后你安排航班,飞他们并赚钱。在日程安排上的任何冲突,无论是双重预定的飞行员或飞机将不会被阻止,但将显示给用户,以使他们解决冲突。如果飞机预定在A机场,当从B机场起飞的航班在同一架飞机上进行时,你必须在某一时刻加上一次从A到B的航班,才能使其有效。
所以我的问题是我将如何对日程安排进行建模。我认为调度应该是一个聚合根,类似于ScheduleWeek或ScheduleMonth,但是接下来我遇到了一个问题,如果预定的航班持续两周怎么办?一周后开始,下周开始后结束。
我有几个想法,第一个是我复制它,所以航班将在两个时间表周内,但我想我需要一个传奇,当一个用户想改变航班的时间,因为我需要确保两个时间表都更新。
我的另一个想法是,也许我应该把它建模为一个移动的时间框架,例如允许未来3个月的航班排定,并在它们过期后归档定期航班,但这感觉对我来说可能是反模式的,因为航班必须取消。(我使用的是事件源,所以它们不会被完全删除)
如果有人觉得我还没有很好地解释这个领域或我的想法,我很乐意详细说明任何事情。也完全愿意接受,我可能已经建模完全错误,有一个更好的模型,我正在考虑的。
谢谢
发布于 2018-10-05 06:39:48
对于这些数据建模问题,我总是回到真理的源头,一直坚持到它被证明是不可行的(过度规范化等原因导致的不行为)。
在这种情况下,假设你在为现实世界建模,真相的来源是:
任何给定的飞行都有一个开始和结束日期,一个飞机分配(例如N12345A或其他标识符),一个飞行员(可能是来自另一个表的ID ),以及您的游戏/sim所要求的其他任何东西。
这些记录代表了实际的飞行,无论是正在进行中的还是计划中的未来.
这与您想要添加到sim中的任何计划系统都是分开的。例如,您可能有一个功能,允许您在每日的基础上,使用任何可用飞机等预订JFK和LAX之间的航班。然后,完成此表单将生成未来的时间表条目,直到某个最大日期。
然后,您可以在游戏中决定是否要解决资源可用性问题,或者在每个“一天”开始时解决。
但关键是,您的实际计划,以及生成该计划的机制是不同的,有不同的数据模型。
https://softwareengineering.stackexchange.com/questions/379465
复制相似问题