在解释我的问题之前,我应该做一些理论...
对于车辆,我指的是所有可以通过公路运输货物的东西:轿车、货车、卡车、拖车(或公路列车,我不知道正确的术语)、半拖车(也称为铰接式卡车或牵引拖车)。
关于汽车,货车和卡车,没有问题:它们具有板块,可运输的重量和体积以及其他数据。
但是另外两辆车更复杂。它们可能有一个额外的车牌和其他额外的数据。特别是:
>
半挂车卡车(也称为牵引拖车)是一种复杂的车辆,由道路牵引车和半挂车组成。
拖车(也称为…)是一种复杂的车辆,由驱动部分(汽车、货车、卡车…)和从动部分(拖车、拖车附件…)组成。在欧洲,最多两个组装部件。
因此,我们还必须处理半挂车,挂车和推车。
在我的软件中,它们可以以不同的方式相互组装。例如,我可以拿一辆拖车从拖车上拉下来,然后只得到一辆卡车和一辆拖车吗。尽管如此,我还是可以驾驶同一辆卡车,如果兼容的话,攻击另一辆不同的拖车。等等
在我看来,很明显,我们不能用一辆一流的汽车来管理一切...
我想知道处理这一切的最好方法是什么。最初,我在Vehicle类中有一个enum,它显示了车辆的类型。但是当我不得不处理复杂的车辆时,我认为它要复杂得多...我也想知道这将如何影响软件的其余部分。
起初,我是这样管理车辆类的:
public class Vehicle {
// kind of
enum TipoVeicolo {
AUTO, // car
FURGONE, // van
AUTOCARRO, // truck
/*
// for semi-trailer truck:
TRATTORE_STRADALE // road tractor
SEMIRIMORCHIO // semi-trailer
AUTOARTICOLATO // semi-trailer truck
// for trailer truck:
RIMORCHIO // trailer
AUTOTRENO // trailer truck
...
*/
};
enum Stato {
DISPONIBILE, // Available
NON_DISPONIBILE,// not available
IN_VIAGGIO // on road...
// ... ?
}
private String targa; // plate
private String mark;
private Stato stato;
private TipoVeicolo tipoVeicolo;
private float portata;
private float volume;
private short europallet;
//Date immatricolationDate;
//String assurance;
public Vehicle(String targa, TipoVeicolo tipoVeicolo, String mark, Stato stato, float ptt) {
this.targa=targa;
this.tipoVeicolo=tipoVeicolo;
this.mark=mark;
this.stato=stato;
this.ptt=ptt;
}
//////////////////////////////////////////////
// GET and SET methods
// ...
}
我该如何处理?继承?
对我来说,这可以这样做。首先,你创建非常通用的车辆类,它基本上有大量的车轮和名称,也许还有其他东西。然后你把它扩展很多次来创造机动车辆,没有电动车的车辆,然后是汽车,卡车等等。
此外,您还可以拥有可拖曳的接口和许多其他描述某些特殊功能的接口。这样,您可以通过检查车辆是否实现了所需的接口来检查其兼容性。
希望有帮助。祝你好运。
我正在阅读有关在有效 Java 中创建不可变类时需要遵循的特定准则。 我知道在不可变类中,方法不应该被覆盖,否则被覆盖的方法可能会改变方法的行为。下面是java中解决这个问题的设计方法 > 我们可以将类标记为final,但是根据我的理解,它有一个缺点,就是使类不可扩展。 其次是使单个方法最终化,但我不能得到其他缺点,除了我们需要单独将每个方法标记为最终,以防止覆盖。 根据书本,更好的方法是使构造函
这是一个面向对象设计模式专家的问题。 假设我有一个类,负责读取/解析数据流(携带不同类型的信息包)。每个数据包都携带不同类型的信息,因此理想情况下,我会为每种类型的数据包创建一个类(,,…每个都有自己的接口)。 然后,方法将遍历流,并将类(或指向类的指针或引用)返回到相应的包类型。 你会用空指针吗?一个泛型类()可以提供一个公共(部分)接口来查询数据包的类型(这样就可以在运行时做出任何决定),怎么
如何基于所选字段获得结果。如果选择car_type来获得一辆车,如果选择奥迪只获得奥迪的车型。示例用户选择car_type Car,获取标记,用户选择Mark Audi获得A1、A2。用户选择宝马得到X6、X5。我连接所有只需要从数据库中获取数据。看我的密码。 Car_type表: 现在我需要在控制器中获取数据。我试试这个 获取id为car_type model 1的标记,但这是错误的逻辑。
我想从数据库中检索不同类型的数据,并从Spring Boot服务的HTTP结果中返回给用户。因为每个数据库检索都需要大量的时间,所以我使用CompletableFuture异步调用这些数据库。与同步进行相比,我所拥有的模式有效且节省了时间,但我觉得它可以也应该以更干净的方式进行布局。 我编辑了代码,将类型更改为“PartA”、“PartB”、“PartC”,但它的外观是这样的。目前,该服务接受不同
我创建了一个如图所示的按钮布局设计。如何实现不同尺寸屏幕的设计模式?这种布局适合3.7英寸屏幕,但不适合其他屏幕。可能是scrollview是一个选项,但这并不满足我。我怎么能做到呢?有什么帮助吗? 这是我的xml文件
我有一个VRP,其中我希望将油耗作为软约束,并且不同车型的油耗不同。所以我希望发动机选择油耗最低的车辆。 我考虑过在车辆类型中添加一个乘数,使其与距离相乘,作为软约束,有可能吗?这会对结果产生负面影响吗? 谢谢,