我有以下问题:
框架从 DB 表生成一个类,每个表列都是类变量(字段)。生成的类有 30 多个字段,只有一个没有参数的构造函数。
要创建该类的实例,我必须使用一些 setter 30 次,这是对不一致的邀请。
我不能直接使用带参数的构造函数或 Builder 模式,因为我无法编辑生成的类。解决这个问题的最佳方法是什么 - 包装类、线程安全方法、经典模式?
我有以下问题:
框架从 DB 表生成一个类,每个表列都是类变量(字段)。生成的类有 30 多个字段,只有一个没有参数的构造函数。
要创建该类的实例,我必须使用一些 setter 30 次,这是对不一致的邀请。
我不能直接使用带参数的构造函数或 Builder 模式,因为我无法编辑生成的类。解决这个问题的最佳方法是什么 - 包装类、线程安全方法、经典模式?
您可以创建一个外部Builder
类,每当您创建一个新对象时,它将所有字段初始化为某个默认值,然后像标准Builder
.
BeanBuilder
我通过创建一个在内部使用反射的类为自己解决了这个问题。您给它您的 bean,然后调用类似startBean
,value
和类似的方法来为您的 bean 填充数据,就像构建 XML 树一样。
如果你喜欢类型安全,你可以为自己创建一个类似的类,专门用于你拥有的那个 bean。
您可以使用 Builder 模式。例如,如果您有Car
带有字段power
, weight
,的对象maxSpeed
,color
那么您可以像这样使用 Builder:
CarBuilder{
private Car car = new Car();
public CarBuilder(int power,int weight){
car.setPower(power);
car.setWeight(weight);
}
public CarBuilder setColor(String color){
car.setColor(color);
return this;
}
public CarBuilder setMaxSpeed(int maxSpeed){
car.setMaxSpeed(maxSpeed);
return this;
}
public Car build(){
return car;
}
}
您可以在 costructor 中设置必填字段,在 settters 中设置附加字段。您也可以在build
方法中执行一些检查。