在多参数(一般在大于4个参数以上)的情况下 或者参数个数不清楚的情况下使用。
- 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{
- private final int servingSize;
- private final int servings;
- private int calories = 0;
- private int fat = 0;
- private int sodium = 0;
- private int carbohydrate = 0;
- public Builder(int servingSize, int servings) {
- super();
- this.servingSize = servingSize;
- this.servings = servings;
- }
- public Builder calories(int val){
- this.calories=val;
- return this;
- }
- public Builder fat(int val){
- this.fat=val;
- return this;
- }
- public Builder sodium(int val){
- this.sodium=val;
- return this;
- }
- public Builder carbohydrate(int val){
- this.carbohydrate=val;
- return this;
- }
- public NutritionFacts build(){
- return new NutritionFacts(this);
- }
- }
- private NutritionFacts(Builder builder){
- this.servingSize=builder.servingSize;
- this.servings=builder.servings;
- this.calories=builder.calories;
- this.fat=builder.fat;
- this.sodium=builder.sodium;
- this.carbohydrate=builder.carbohydrate;
- }
- }
调用:
- NutritionFacts mNutritionFacts=new NutritionFacts.Builder(240, 8).
- calories(100).carbohydrate(27).sodium(35).build();