对于你的问题,没有简单的答案。因为这取决于您将使用该数据结构执行的业务逻辑。
我会从一个接口 Vehicle
开始,它将解析标识符以获取具体代表的描述。
interface VehicleIdentyficator {
String identyficator();
}
interface Vehicle {
Identyficator getIdentyficator();
}
使用这种方法,您不会受到类、枚举或其他设计类型的限制。
然后,我将使用类层次结构来描述每辆车的属性。
接下来,添加一些逻辑/行为方面的代码,并确保我的数据结构对任务有效。
最重要的是执行一些操作。例如,创建三个类Truck、LightTruck和HavyTruck没有意义。
您可以创建一个根据它们执行的任务来描述它们的类。
它们可以在地面上运输。轻型卡车可以承载较少的负载,但用于在小城市旅行。重型卡车与轻型卡车相反。具有较大的范围和承载更多的负载。
当我们将其与船进行比较时,我们发现船更像轻型卡车,唯一的区别是它在水上行驶。
因此,尝试理解对象不是它是什么,而是它能做什么。可以执行哪些任务以及有哪些限制。然后,您的设计将非常接近您所需的内容。
希望这句话是正确的,我会再说一遍。看起来您正在使用这些车辆,而不是构建它们。因此,专注于实现它们的任务,而不是它们的物理方面。
但是您可以做类似这样的事情。
enum VechicleType implements VehicleIdentyficator {
TRUCK("TRUCK"),
HEAVY_TRUCK("HEAVY_TRUCK")
private final String indentyficator;
private VechicleType(String indetyficator) {
this.indentyficator = identyficator;
}
public String identyficator() {
return indentyficator;
}
}
但是,每当您添加新的车辆时,您必须覆盖所有使用该新硬编码类型的点。