我有一个类(假设是 Vehicle),其中包含相当多的子类(Car、Bike、..)。每个子类都存储有关子类类型的特定信息(轮胎#,..)。
我想确保所有这些信息都已经被强制执行(在编译时)。所以我不想在子类的构造函数中指定这些数据(因为我可能会忘记设置其中的一些)。我可以将这些信息放在 Vehicle 的构造函数中,但这会使代码非常混乱,因为我有很多这些参数。
public class Vehicle {
int numberOfTires;
public Vehicle(int numberOfTires, ...) {
...
}
}
public class Bike {
public Bike() {
super(2,...);
...
}
}
我最终得到了完全不可读的构造函数。它还将存储每个实例的此信息,即使它特定于子类。
另一种方法是引入抽象静态 getter/setter 并将信息存储在子类中。
public class Vehicle {
...
abstract public int getNumberOfTires();
}
public class Bike {
static int numberofTires = 2;
...
public int getNumberOfTires() {
return numberOfTires;
}
}
这看起来更干净,并且还存储每个子类而不是每个实例的信息,但是子类中会有很多代码重复。目前,所有子类都包含约 20 个 setter/getter,但几乎没有真正的功能。有没有避免这种情况的干净方法?也许使用工厂方法或类似方法?