我在这里阅读了有关生成器模式的好处:http://drdobbs.com/java/208403883?pgno=2
我想知道以下方法的可行性,它似乎更简单。
public class NutritionFactParams {
private int servingSize;
private int servings;
private int fat_ = 0;
private int sodium_ = 0;
NutritionFactParams(int servingSize, int servings) {
this.servingSize = servingSize;
this.servings = servings;
}
NutritionFactParams fat(int fat) {
this.fat_ = fat;
return this;
}
NutritionFactParams sodium(int sodium) {
this.sodium_ = sodium;
return this;
}
}
public class NutritionFacts {
public NutritionFacts(NutritionFactParams params) {
// copy values across, or store NutritionFactParams as member
}
}
public class Main {
public static void main(String args[]) {
NutritionFacts n = new NutritionFacts(new NutritionFactParams(1,2).fat(23).soduim(10));
}
}
这基本上是建造者模式,但与NutritionFacts私有构造函数不同的是,它是公共构造函数。我们没有在NutritionFacts内部创建静态Builder类,并且构建器上没有build()方法。由于没有备用或默认构造函数,因此您不能在先构造NutritionFactsParams之前构建NutritionFacts。