背景:
当类中属性太多,我们需要通过各种不同参数组合的构造方法来初始化对象,这样写起来很麻烦,而且选择构造方式时容易混淆出错,如果通过javabean的setter方式来初始化, 又会遇到线程安全的问题(因为对象的创建分在了好几步的过程中,不能保证对象状态的一致性)
实例:通过内部类的方式。
public class Test {
private int servingSize;
private int servings;
private int calories;
private int fat;
private int sodium;
private int carbohydrate;
public static class Builder {
private int servingSize;
private int servings;
private int calories;
private int fat;
private int sodium;
private int carbohydrate;
public Builder (int servingSize, int servings) {
this.servingSize = servingSize;
this.servings = servings;
}
public Builder calories(int calories) {
calories = calories;
return this;
}
public Builder fat(int fat) {
fat = fat;
return this;
}
public Builder sodium(int sodium) {
sodium = sodium;
return this;
}
public Builder carbohydrate(int carbohydrate) {
carbohydrate = carbohydrate;
return this;
}
public Test builder () {
return new Test(this);
}
}
private Test(Builder builder) {
servingSize = builder.servingSize;
servings = builder.servings;
calories = builder.calories;
fat = builder.fat;
sodium = builder.sodium;
carbohydrate = builder.carbohydrate;
}
}
测试:
public static void main(String[] args) {
Test test = new Builder(1,2).calories(3).fat(4).sodium(5).carbohydrate(6).builder();
}
1502

被折叠的 条评论
为什么被折叠?



