想象一下,我有一个类封装了另一个类:
@Builder
public class Dragon {
private Dimensions dimensions;
private String name;
public static class ParentBuilder {
DimensionsBuilder innerBuilder = Dimensions.builder();
public DragonBuilder height(double height) {
this.innerBuilder.height(height);
return this;
}
public DragonBuilder length(double length) {
this.innerBuilder.length(length);
return this;
}
public Dragon build() {
return Dragon.builder()
.dimensions(this.innerBuilder.build())
.name(this.name)
.build();
}
}
}
@Builder
public class Dimensions {
private double height;
private double length;
}
请记住,这是一个非常简化的示例,真正的代码(不幸的是,与龙无关)将很多属性委托给innerBuilder.
这样,我可以像这样实例化类:
Dragon dragon = Dragon.builder()
.height(12.0)
.length(25.0)
.name("Smaug")
.build();
而不是这样:
Dragon dragon = Dragon.builder()
.dimensions(Dimensions.builder()
.height(12.0)
.length(25.0)
.build())
.name("Smaug")
.build;
添加构建器方法以直接构建内部类也是好的编码习惯吗?或者它是否违反了某些设计原则,因为它可能耦合得太紧了?
我已经遇到的一个问题是在对内部类进行重构时,我还必须对父类应用大部分相同的重构。
慕斯王
相关分类