我目前正在做一项任务,在那里我必须在java (大学项目)构建一个铁路模拟项目。
有三种类型的机车车辆:货车,机车和多个单位。 所有类型的机车车辆都有名称和长度。 此外,还有三种类型的货车和机车。
这里是我创建的一个简单的UML图。
现在,我仍然需要实现这个“特性”:
多个单元ID是按照与机车相同的规则组成的。因此,机车和多个单元共享相同的ID空间。多个单元有一种特殊类型的耦合,因此只能由同一系列多个单元组成。
对于机车和多个单元来说,使用相同的ID空间的最佳方法是什么?
这是一个很好的模型,还是应该使用接口呢?我很感谢你的反馈和建议。提前感谢!
发布于 2020-02-10 08:22:35
对于机车和多个单元来说,使用相同的ID空间的最佳方法是什么?
不重要,只要它是独一无二的。只需使用序列号,或者,如果您想要一个不与单个计数器绑定的序列号,则使用完全随机的序列号( 128位或以上)。为什么不在你使用标准的时候使用它。
你应该问自己的一个问题是:这个ID会被用于货车吗?如果是这样的话,一个短的静态序列号(或字符串)肯定更有意义。可能会有一些注册机构,所以在这种情况下,您的中央柜台就在那里。永远不要忘记检查你的模型是否符合现实世界!
在ID前面加上传输类型是有意义的,尽管在这种情况下,我认为它已经不再使用相同的空间了。
这是一个很好的模型,还是应该使用接口呢?我很感谢你的反馈和建议。
编辑:错了,我以为所有的铁路车辆都会有身份证!
不,这很好,你毕竟要对ID进行操作。您可能会添加其他类似于所有子类的功能到铁路车辆上。请注意,许多环境都有提取接口并替换对该接口的现有引用的方法。重构不是你想要做的事情,但当你需要它的时候,它就在你的身边。
编辑:
如果你只有机车和机车车辆的身份证,那么有两种选择。最好是插入一个定义IdentifyableRollingStock
中间类的中间抽象类。还有其他选项,比如创建一个可选的ID,或者使用装饰模式。如果货车不能被识别的话,那就有点奇怪了。在NL中,我很确定所有的铁路车辆都是可以识别的。
我只想知道是否所有的铁路车辆都有名字。我看到一些货车只是有个号码。这是另一个真实世界的检查。
加班
多个单元具有特殊的耦合类型,因此只能由同一系列的多个单元组成。
写这封信的人应该被射入轨道。做个好人,让它成为国际空间站。一遍又一遍.
https://stackoverflow.com/questions/60154115
复制