如果类的构造器具有多个参数时,通常适用Builder模式类设计类。下面设计一个类表示包装食品外面显示的营养成分标签。
package BuilderPattern;
public class NutritionFacts {
private final int servingSize; //每份含量
private final int servings; //每一份小包装的含量
private final int calories;
private final int fat;
private final int sodium; //钠
private final int carbohydrate; //碳水化合物,糖类
public static class Builder {
//Required parameters
private final int servingSize;
private final int servings;
//Optional parameters
private int calories=0;
private int fat=0;
private int sodium=0;
private int carbohydrate=0;
public Builder(int servingSize,int servings) {
// TODO Auto-generated constructor stub
this.servingSize=servingSize;
this.servings=servings;
}
public Builder calories(int val) {
calories=val; return this;
}
public Builder fat(int val) {
fat=val; return this;
}
public Builder sodium(int val) {
sodium=val; return this;
}
public Builder carbohydrate(int val) {
carbohydrate=val; return this;
}
public NutritionFacts build() {
return new NutritionFacts(this);
}
}
public NutritionFacts(Builder builder) {
servingSize=builder.servingSize;
servings=builder.servings;
calories=builder.calories;
fat=builder.fat;
sodium=builder.sodium;
carbohydrate=builder.carbohydrate;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
NutritionFacts cocaCola=new NutritionFacts.Builder(240, 8).calories(100).build();
System.out.println("cocaCola's calories:"+cocaCola.calories);
}
}